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