本文僅提供了public 方法的測試說明。及前期工作和常用的斷言和測試attribute。
NUNIT使用說明
一:軟件及安裝
免費,開源的單元測試軟件。
安裝只要運行安裝程序,按所有缺省設置即可。
NUNIT:www.nunit.org
NUNIT ADDIN :http://sourceforge.net/projects/nunitaddin/
二:DLL的測試
1:新建一個Class Library PROJECT,
2:加入待測試DLL的引用,
3:加入NUnit.Framework.dll的引用
4:在文件開頭加入:using NUnit.Framework
5:在待測試的類前加入:[TestFixture]
6:在待測試的方法前加入:[Test]
7:啟動NUNIT-GUI,新建項目,將新建的Class Library PROJECT加入,執(zhí)行。
三:Attribute簡介
1:TestFixture:每個待測試的類前必須加該Attribute。
【注意】待測試類需要有一個public的default constructor(或者是沒有定義任何的constructor)
2:Test:每個測試的類中待測試的函數前必須加該Attribute。
【注意】有Test attribute的method必須是public的,并且必須return void,也沒有任何傳入的參數。如果沒有符合這些規(guī)定,在Test Runner GUI之中是不會列出這個method的,而且在執(zhí)行Unit Test的時候也不會執(zhí)行這個method。
3:TestFixtureSetUp 和TestFixtureTearDown簡介
這兩個主要用在TestFixture里面,其作用是提供一組函數執(zhí)行任何測試運行之前(TestFixtureSetUP)和后一個測試執(zhí)行后(TestFixtureTearDown)。每一個TestFixture只能有一個TestFixtureSetUp方法和TestFixtureTearDown方法。如果一個以上的TestFixtureSetUp和TestFixtureTearDown方法,可以通過編譯但是不會執(zhí)行。注意一個TestFixture可以擁有一個TestFixtureSetUp和一個SetUp,也可以擁有一個TestFixtureTearDown和一個TearDown方法。
TestFixtureSetUp 和 TestFixtureTearDown 被用在不方便使用SetUp和TearDown方法。
一般情況使用 SetUp 和TearDown attributes。
4:SetUp 和 Teardown Attributes簡介
在寫Unit Tests的時候,有時你會需要在執(zhí)行每一個test method之前(或之后)先作一些預備或善后工作。當然,你可以寫一個private的method,然后在每一個test method的一開頭或末端呼叫這個特別的method;蛘,你可以使用我們要介紹的SetUp及Teardown Attributes來達到相同的目的。如同這兩個Attributes的名字的意思,有Setup Attribute的method會在該TextFixture中的每一個test method被執(zhí)行之前先被Test Runner所執(zhí)行,而有Teardown Attribute的method則會在每一個test method被執(zhí)行之后被Test Runner所執(zhí)行。一般來說,Setup Attribute及Teardown Attribute被用來預備一些必須的objects(對象),例如database connection、等等。
5:Attribute說明
TestFixture:每個待測試的類前必須加該Attribute。
Test:每個測試的類中待測試的函數前必須加該Attribute。
TestFixtureSetUp:在一個測試類中只執(zhí)行一次,且在所有測試案例運行前執(zhí)行
SetUp:在每個測試案例運行前執(zhí)行
ADD:測試案例1
TearDown:在每個測試案例運行后執(zhí)行
SetUp:在每個測試案例運行前執(zhí)行
Sub:測試案例2
TearDown:在每個測試案例運行后執(zhí)行
TestFixtureTearDown:在一個測試類中只執(zhí)行一次,且在所有測試案例運行后執(zhí)行
ExpectedException:檢測拋出異常
[Test]
[ExpectedException(typeof(InvalidOperationException))]
[Test,ExpectedException(typeof(InvalidOperationException))]
Ignore :臨時忽略一些測試
Ignore(“Not ready to test this yet”);
四:NUNIT的各種斷言
斷言用于幫助你確定某個被測試函數是否工作正常,通常一個測試方法中會有多個斷言,當一個斷言失敗時,該測試方法會終止。可使用Assert或Assertion調用斷言函數。
1:AreEquals(expected,actual[,string message])
Expected是被測試代碼的期望值,actual是被測試代碼的實際值,message是一個可選的消息,在二個值不一致時報告錯誤。Expected和actual可以是一個對象。
對于浮點數的比較,使用AreEquals(expected,actual,tolerance[,string message]),其中,tolerance表示精度,0.01表示僅比較小數后二位。
2:IsNull/IsNotNull(object[,string message])
判斷一個對象是空/非空。
3:AreSame(expected,actual[,string message])
判斷Expected和actual是否是同一個對象。
4:IsTrue(bool condition[,string message])/IsFalse
判斷條件是否為真/假。
5:Fail([string message])
使測試立即失效。
五:異常處理
NUNIT框架可以捕獲任何異常,并且把它報告為一個錯誤,這些都不需要用戶的參與
六:測試用例編寫
NUNIT使用斷言業(yè)判斷待測試代碼是否返回正確的結果,在編寫測試用例的過程中,經常需要有一個正確的值作為依據,與測試代碼返回的值進行比較。在有些情況下,可以比較容易地取到這些正確的值,但有時要取得這些正確的值并不容易。如在從數據庫取數據時,難以設定一個正確的值,在這種情況下,好使用一些已被測試是正確的或商用的模塊程序,將這些測試過的程序或商用模塊返回的值作為正確的值,作為一個比較參照。