ここでは、例を挙げて問題を説明します。元の質問は、問題をより抽象的に示しています。といっても読む必要はありません。
更新:例としての質問
int[] の最小値を見つけるために、このバグのある関数を実装したとしましょう。
public int MyMin(int[] data)
{
int min = 1000;
for (int i = 1; i < data.Length; i++)
{
if (data[i] < min)
{
min = data[i];
}
}
return min;
}
この関数で Intellitest を実行すると、次の結果が得られます。
テスト #4 と #6 では、実装にバグがあるため、関数が最小値を正しく計算していないことに注意してください。ただし、これらのテストはパスしており、望ましくありません。
インテリテストは、意図した動作を魔法のように判断MyMin
して、これらの入力で失敗するようにテストを作成することはできません。ただし、これらのテストの目的の結果を手動で指定できれば、非常に便利です。
@ michał-komorowski のソリューションは実現可能ですが、テスト ケースごとにPexAssume
s に関して入力を繰り返す必要があります。テスト入力に必要な出力を指定する、よりエレガントでクリーンな方法はありますか?
元の質問
Intelitest は、変更可能なパラメーター化されたテストを生成し、そこに一般/グローバル アサーションを追加できます。また、コード カバレッジを最大化する最小数の入力を生成します。Intellitest は入力を個別の単体テストとして保存し、それぞれが細工された入力を使用してパラメーター化されたテストを呼び出します。
入力ごとにアサーションを追加する方法を探しています。
各入力は単体テスト関数として.g.csファイルに保存されるため、そこにアサーションを追加できます。問題は、これらの関数は、その後の実行で Intellitest によって上書きされるため、ユーザーがカスタマイズすることを想定していないことです。
各単体テストにアサーションを追加する推奨される方法は何ですか?