我正在使用nunit在C#中编写一些单元测试.请考虑以下代码:
[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");
}
}
Run Code Online (Sandbox Code Playgroud)
假设Examples是一个带有一些静态数据的类,用于测试汽车类型的不同可能输入,你可以看到我试图测试car.getCost()函数中的任何错误.现在在循环中使用它会在某种程度上感觉不对,因为例如当任何断言失败时它总是会将您发送到同一行代码.此外,据我所知,只要[Test()]中的断言失败,nunit会立即终止其余的测试代码.这意味着如果我在循环中拥有所有内容并且断言nr 1失败,我不会看到其他断言是否失败.明确地编写所有测试本质上是编写copypeasted代码,所以它也感觉不对.在这种情况下,什么是良好做法?是否可以在单元测试中使用大量类似的代码?我缺少一些优雅的解决方案吗?