私はC#でnunitを使っていくつかの単体テストを書いています。次のコードを考えてみましょう:単体テストをループで実行するのは悪い習慣ですか?
[Test()]
public void TestCarCost() {
for (int i = 0; i < Examples.exampleCount; i++) {
Car car = new Car(Examples[i]);
Assert.AreEqual (car.getCost(), Examples[i].cost, "Test " + (i + 1) + " failed");
}
}
のは、例を言ってみましょうあなたは、私が(car.getCostのいずれかのバグをテストしようとしています見ることができるように)、車の種類ごとに異なる可能な入力をテストするためのいくつかの静的データを持つクラスです関数。今ではループ内でこれを行うのはどうにかして間違っていると感じます。たとえば、アサーションのいずれかが失敗した場合、常に同じコード行にあなたを送ります。さらに、[Test()] nunitでアサーションが失敗したときには、すぐにテストコードの残りの部分を終了させることができます。つまり、ループ内にすべてがあり、nr 1が失敗すると、他のものが失敗したかどうかを確認することはできません。明示的にすべてのテストを書くことは本質的にはコピーされたコードを書いているので、正しく感じられません。この状況では、何が良い習慣と考えられるでしょうか?単体テストでも同様のコードが大量にあるのは大丈夫ですか?私が紛失している優雅な解決策はありますか?
NUnitの 'TestCase'属性はここで使用できます。ここでは「例」とは何ですか? –