0

私の質問は、すべてのシナリオで同じテスト アサーションまたはケースを繰り返してもよいかどうかです。

ここでのシナリオは、関数がある場合、この関数は、さまざまなパラメーターの組み合わせのセットを含むさまざまなシナリオを使用してシミュレートできます。

たとえば、3 つの可能なシナリオを持つ関数があります。各シナリオでは、このシナリオがこの関数でシミュレートされるたびに、3 つの同様のイベントが発生します。

シナリオ A のテストを作成するときは、このシナリオに含まれる 3 つのイベントをテストするために 3 つのアサーションを作成します。他のシナリオで同じパターンのアサーションを繰り返しても問題ありませんか?

アサーションは必ずしも同じではありませんが、パターンは同じです。

誰かが私の言いたいことを理解してくれることを願っています。これが一般的すぎることはわかっています。

4

2 に答える 2

5

使用している言語/ツールセット/テスト フレームワークによっては、パラメーター化されたテストが解決策になる場合があります。異なるパラメーターで複数回呼び出される単一のテストを記述でき、入力または期待される出力のみが異なるテスト ケースを組み合わせる優れた方法です。

C# / NUnit を使用した場合のテストの簡単な例を次に示します。

[TestCase(true, false, 5)]
[TestCase(false, true, 99)]
public void Test_Foo_Bars(bool conditionA, bool conditionB, int expectedResult)
{
    var x = new MyClass(conditionA);
    var result = x.Foo(conditionB);
    result.ShouldBe(expectedResult);
}

このテストは 2 回実行されます。TestCase 属性で指定された各パラメータ セットで 1 回。

もちろん、正確な構文と使用法はツールセットによって異なりますが、基本的な考え方は同じです。

于 2013-03-06T04:00:03.477 に答える
5

適切なテストとは何かを定義するのは、本当にあなた次第です。

私が自問するいくつかの質問:

単体テストはすべてのコード パスをテストしますか? 典型的なケースをカバーしていますか? コーナーケースをカバーしますか? 例外的なケース (つまり、誤った入力) はカバーされますか?

上記の質問をカバーしている限り、複数のシナリオで同じ/類似のテストケースを使用することに問題はありません。

于 2013-03-06T03:52:15.403 に答える