[轉(zhuǎn)]使用Nunit進(jìn)行單元測試入門
使用Nunit進(jìn)行單元測試入門
前言:
Nunit是一項開源的項目,利用Nunit,你可以方便快捷地對已有的.NET組件進(jìn)行單元測試。利用Nunit,你可以在不修改原有代碼的情況下,編寫專門的測試代碼對需要測試的函數(shù)和組件進(jìn)行測試。如果大家有興趣可以將Nunit和VSTS自帶的單元測試進(jìn)行比較:)
正文:
如果你的機器上沒有安裝Nunit,請先到http://www.nunit.org/download.html下載,并安裝到機器上。
接下來,我們來看看究竟如何來使用Nunit進(jìn)行單元測試
現(xiàn)在,我有這樣一個Account類:
namespace bank
{
public class Account
{
private float balance;
public void Deposit(float amount)
{
balance += amount;
}
public void Withdraw(float amount)
{
balance -= amount;
}
public void TransferFunds(Account destination, float amount)
{
}
public float Balance
{
get { return balance; }
}
}
}
但是我并不知道這個類是否可以正確地工作,所以我需要對Account類進(jìn)行單元測試。
在可以新建一個類庫項目,在這個類庫的引用項目中指定Account.dll和Nunit.framework.dll。注意,Nunit.framework.dll文件在你安裝Nunit的bin目錄下。
然后我在這個新建的類庫項目中添加一個AccountTest的類文件后編譯,該文件如下:
namespace bank
{
using NUnit.Framework;
[TestFixture]
public class AccountTest
{
[Test]
public void TransferFunds()
{
Account source = new Account();
source.Deposit(200.00F);
Account destination = new Account();
destination.Deposit(150.00F);
source.TransferFunds(destination, 100.00F);
Assert.AreEqual(250.00F, destination.Balance);
Assert.AreEqual(100.00F, source.Balance);
}
}
}
請注意,這個測試類一定要是public的,否則Nunit無法正常工作。
接下來,我們啟動Nunit(在你的桌面上有快捷方式的圖標(biāo)),然后在File -> Open Project中打開到你剛剛編譯出來的AccountTest.dll即可。這個時候,你會發(fā)現(xiàn)右邊有一個“Run”的按鈕可以使用了,點擊它,這個時候,Account類的單元測試就開始了。測試完畢后,出現(xiàn)紅色的標(biāo)志,這是測試失敗的標(biāo)志。這說明我們的Account類有問題,我們需要將Account類中的Withdraw方法完成:
public void Withdraw(float amount)
{
balance -= amount;
}
重新編譯Account類以后,我們再次點擊“Run”按鈕,這個時候,紅色變成了綠色,這說明測試通過了。
這樣,你便完成了對Account類的測試,接下來,我們來詳細(xì)說一說AccountTest類中奇怪的Attributes。
l TestFixture
這個Attribute只能在類上使用,他告訴Nunit這個類中包含有需要測試的方法。
不過注意這個類保證一下4點:
1. 這個類必須是Public的。
2. 這個類不能是Abstract的。
3. 這個類必須有一個默認(rèn)構(gòu)造函數(shù)。
4. 這個類中的方法被標(biāo)記的Attribute只能出現(xiàn)一次:SetUp, TearDown, TestFixtureSetUp 和 TestFixtureTearDown。
l Test
這個Attribute只能標(biāo)記了TestFixture的類中的方法上使用,他告訴Nunit這個是一個需要測試的方法。
在下來就是AccountTest類中的TransferFunds方法中的Assert。
它類似與.NET Framework中的Assert類,如果Assert中的方法返回False,這測試結(jié)果為失敗,否則為成功。在Nunit中,就是使用Assert來判斷一個測試是否通過。
好了,相信現(xiàn)在大家一定對Nunit的使用有了基本的了解了。那么,恭喜大家了。
后記:
Nunit是一個不斷完善的免費工具,但是這并代表他比VSTS自帶的單元測試工具差,他對VS的支持也是相當(dāng)不錯的,而且可以針對自己對測試的需要來自定義很多功能,同時對插件的支持也給了我們更大的空間來發(fā)揮Nunit的功能。
關(guān)于更多更詳細(xì)的介紹,請大家查看Nunit的幫助文檔:)
浙公網(wǎng)安備 33010602011771號