本文僅提供了public 方法的測(cè)試說(shuō)明。及前期工作和常用的斷言和測(cè)試attribute。
NUNIT使用說(shuō)明
一:軟件及安裝
免費(fèi),開(kāi)源的單元測(cè)試軟件。
安裝只要運(yùn)行安裝程序,按所有缺省設(shè)置即可。
NUNIT:www.nunit.org
NUNIT ADDIN :http://sourceforge.net/projects/nunitaddin/
二:DLL的測(cè)試
1:新建一個(gè)Class Library PROJECT,
2:加入待測(cè)試DLL的引用,
3:加入NUnit.Framework.dll的引用
4:在文件開(kāi)頭加入:using NUnit.Framework
5:在待測(cè)試的類前加入:[TestFixture]
6:在待測(cè)試的方法前加入:[Test]
7:啟動(dòng)NUNIT-GUI,新建項(xiàng)目,將新建的Class Library PROJECT加入,執(zhí)行。
三:Attribute簡(jiǎn)介
1:TestFixture:每個(gè)待測(cè)試的類前必須加該Attribute。
【注意】待測(cè)試類需要有一個(gè)public的default constructor(或者是沒(méi)有定義任何的constructor)
2:Test:每個(gè)測(cè)試的類中待測(cè)試的函數(shù)前必須加該Attribute。
【注意】有Test attribute的method必須是public的,并且必須return void,也沒(méi)有任何傳入的參數(shù)。如果沒(méi)有符合這些規(guī)定,在Test Runner GUI之中是不會(huì)列出這個(gè)method的,而且在執(zhí)行Unit Test的時(shí)候也不會(huì)執(zhí)行這個(gè)method。
3:TestFixtureSetUp 和TestFixtureTearDown簡(jiǎn)介
這兩個(gè)主要用在TestFixture里面,其作用是提供一組函數(shù)執(zhí)行任何測(cè)試運(yùn)行之前(TestFixtureSetUP)和后一個(gè)測(cè)試執(zhí)行后(TestFixtureTearDown)。每一個(gè)TestFixture只能有一個(gè)TestFixtureSetUp方法和TestFixtureTearDown方法。如果一個(gè)以上的TestFixtureSetUp和TestFixtureTearDown方法,可以通過(guò)編譯但是不會(huì)執(zhí)行。注意一個(gè)TestFixture可以擁有一個(gè)TestFixtureSetUp和一個(gè)SetUp,也可以擁有一個(gè)TestFixtureTearDown和一個(gè)TearDown方法。
TestFixtureSetUp 和 TestFixtureTearDown 被用在不方便使用SetUp和TearDown方法。
一般情況使用 SetUp 和TearDown attributes。
4:SetUp 和 Teardown Attributes簡(jiǎn)介
在寫(xiě)Unit Tests的時(shí)候,有時(shí)你會(huì)需要在執(zhí)行每一個(gè)test method之前(或之后)先作一些預(yù)備或善后工作。當(dāng)然,你可以寫(xiě)一個(gè)private的method,然后在每一個(gè)test method的一開(kāi)頭或末端呼叫這個(gè)特別的method;蛘,你可以使用我們要介紹的SetUp及Teardown Attributes來(lái)達(dá)到相同的目的。如同這兩個(gè)Attributes的名字的意思,有Setup Attribute的method會(huì)在該TextFixture中的每一個(gè)test method被執(zhí)行之前先被Test Runner所執(zhí)行,而有Teardown Attribute的method則會(huì)在每一個(gè)test method被執(zhí)行之后被Test Runner所執(zhí)行。一般來(lái)說(shuō),Setup Attribute及Teardown Attribute被用來(lái)預(yù)備一些必須的objects(對(duì)象),例如database connection、等等。
5:Attribute說(shuō)明
TestFixture:每個(gè)待測(cè)試的類前必須加該Attribute。
Test:每個(gè)測(cè)試的類中待測(cè)試的函數(shù)前必須加該Attribute。
TestFixtureSetUp:在一個(gè)測(cè)試類中只執(zhí)行一次,且在所有測(cè)試案例運(yùn)行前執(zhí)行
SetUp:在每個(gè)測(cè)試案例運(yùn)行前執(zhí)行
ADD:測(cè)試案例1
TearDown:在每個(gè)測(cè)試案例運(yùn)行后執(zhí)行
SetUp:在每個(gè)測(cè)試案例運(yùn)行前執(zhí)行
Sub:測(cè)試案例2
TearDown:在每個(gè)測(cè)試案例運(yùn)行后執(zhí)行
TestFixtureTearDown:在一個(gè)測(cè)試類中只執(zhí)行一次,且在所有測(cè)試案例運(yùn)行后執(zhí)行
ExpectedException:檢測(cè)拋出異常