這個(gè)類(lèi)很簡(jiǎn)單,編譯通過(guò),運(yùn)行,一切ok。
3)在同一個(gè)項(xiàng)目中,增加一個(gè)用來(lái)測(cè)試 Account 類(lèi)中的方法的測(cè)試類(lèi)(里面的幾個(gè)Attribute是關(guān)鍵的)
using NUnit.Framework; // 千萬(wàn)別忘了這一行
[TestFixture] // 這個(gè)Attribute說(shuō)明 AccountTest 類(lèi)中包含有測(cè)試
public class AccountTest
{
[Test] // 這個(gè)Attribute說(shuō)明了 TestTransferFunds() 方法是用來(lái)做測(cè)試的
// 一般測(cè)試方法的名字是在被測(cè)試方法名前加上Test
public void TestTransferFunds()
{
// 準(zhǔn)備工作
Account source = new Account();
source.Deposit(200.00F);
Account destination = new Account();
destination.Deposit(150.00F);
source.TransferFunds(destination, 100.00F); // 轉(zhuǎn)賬
// 利用 Nunit.Framework 中的 Assert 類(lèi)看看轉(zhuǎn)賬以后兩個(gè)賬戶的余額是否正確
Assert.AreEqual(250.00F, destination.Balance);
Assert.AreEqual(100.00F, source.Balance);
}
}
然后編譯一下,生成一個(gè) exe 文件(如果要生成 DLL 的話,更改一下這個(gè)這個(gè)項(xiàng)目的 Output Type屬性,改成 Class Library可以了。這個(gè)改動(dòng)還是在Solution Explorer 窗口中,項(xiàng)目名上 右鍵--屬性。 對(duì)于這個(gè)例子,生成DLL的話不需要 Main() 方法了)。
4)打開(kāi)NUnit,F(xiàn)ile--Open,找到剛才編譯生成的 exe。然后 Run,滿眼可愛(ài)的綠色,說(shuō)明測(cè)試都成功了^_^。
如果想看看測(cè)試失敗的樣子,可以把 Assert.AreEqual() 里面的值改一下……
例子中只用到了 Test Fixture 和 Test 這兩個(gè)Attribute,其他更多的用法在 NUnit 文檔中寫(xiě)得十分清楚,文檔中也有些更好的例子……
自動(dòng)化的單元測(cè)試有什么用? 答:省時(shí)省力。當(dāng)一個(gè)系統(tǒng)需要測(cè)試的類(lèi)/方法 成千上萬(wàn)時(shí),手工的測(cè)試方法(用控制臺(tái)打印出信息等等)的效率會(huì)比較低。
總結(jié):NUnit 很好的利用了反射機(jī)制,單元測(cè)試十分方便。但是對(duì)于復(fù)雜的對(duì)象,寫(xiě)出低耦合的測(cè)試代碼可能有一定難度