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