【发布时间】:2017-03-06 21:42:29
【问题描述】:
我正在使用 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");
}
}
假设 Examples 是一个包含一些静态数据的类,用于测试汽车类型的不同可能输入,如您所见,我正在尝试测试 car.getCost() 函数中的任何错误。现在让这个循环在某种程度上感觉是错误的,因为例如当任何断言失败时,它总是将您发送到同一行代码。此外,据我所知,只要 [Test ()] nunit 中的断言失败,就会立即终止其余的测试代码。这意味着如果我将所有内容都放在一个循环中并且断言 nr 1 失败,我将无法查看其他断言是否失败。显式编写所有测试本质上是编写复制粘贴的代码,因此感觉也不对。在这种情况下,什么被认为是好的做法?在单元测试中有大量类似的代码可以吗?是否有一些我缺少的优雅解决方案?
【问题讨论】:
-
你可以在这里使用 NUnit 的
TestCase属性。Example这里是什么?
标签: c# unit-testing nunit