NUnit和MbUnit有一个RowTest属性,允许您将不同的参数集发送到单个测试中。在单元测试中使用RowTest是一种很好的做法
[RowTest]
[Row(5, 10, 15)]
[Row(3.5, 2.7, 6.2)]
[Row(-5, 6, 1)]
public void AddTest(double firstNumber, double secondNumber, double result)
{
Assert.AreEqual(result, firstNumber + secondNumber);
}
我曾经是这个功能的狂热粉丝。我到处使用它。但是,最近我不确定在单元测试中使用RowTest是否是一个好主意。这里有更多的原因:
单元测试必须非常简单。如果有错误,你不想花费很多时间来弄清楚你的测试测试。当您使用多行时,每行都有不同的发送参数集,并测试不同的东西。
另外我使用的是TestDriven.NET,它允许我从IDE,Visual Studio运行我的单元测试。用TestDrivent.NET我不能指示运行一个特定的行,它会执行所有的行。因此,当我调试时,我必须注释掉所有其他行,只留下我正在使用的那一行。
下面是一个例子,如何会写我的测试今天:
[Test]
public void Add_with_positive_whole_numbers()
{
Assert.AreEqual(5, 10 + 15);
}
[Test]
public void Add_with_one_decimal_number()
{
Assert.AreEqual(6.2, 3.5 + 2.7);
}
[Test]
public void Add_with_negative_number()
{
Assert.AreEqual(1, -5 + 6);
}
说,我还是会偶尔使用RowTest属性,但只有当我认为它不会给我慢下来的时候,我需要后来这个工作。
您认为在单元测试中使用此功能是个好主意吗?
我也提到了..它凝胶与我固有的懒惰。 – Gishu 2009-04-28 12:06:18