您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > Nunit
單元測(cè)試工具Nunit使用說(shuō)明
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/22 14:08:44 ] 推薦標(biāo)簽:

本文僅提供了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è)試的類(lèi)前加入:[TestFixture]

6:在待測(cè)試的方法前加入:[Test]

7:啟動(dòng)NUNIT-GUI,新建項(xiàng)目,將新建的Class Library PROJECT加入,執(zhí)行。

三:Attribute簡(jiǎn)介

1:TestFixture:每個(gè)待測(cè)試的類(lèi)前必須加該Attribute。

【注意】待測(cè)試類(lèi)需要有一個(gè)public的default constructor(或者是沒(méi)有定義任何的constructor)

2:Test:每個(gè)測(cè)試的類(lèi)中待測(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è)試的類(lèi)前必須加該Attribute。

Test:每個(gè)測(cè)試的類(lèi)中待測(cè)試的函數(shù)前必須加該Attribute。

TestFixtureSetUp:在一個(gè)測(cè)試類(lèi)中只執(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è)試類(lèi)中只執(zhí)行一次,且在所有測(cè)試案例運(yùn)行后執(zhí)行

ExpectedException:檢測(cè)拋出異常

[Test]

[ExpectedException(typeof(InvalidOperationException))]

[Test,ExpectedException(typeof(InvalidOperationException))]

Ignore :臨時(shí)忽略一些測(cè)試

Ignore(“Not ready to test this yet”);

四:NUNIT的各種斷言

斷言用于幫助你確定某個(gè)被測(cè)試函數(shù)是否工作正常,通常一個(gè)測(cè)試方法中會(huì)有多個(gè)斷言,當(dāng)一個(gè)斷言失敗時(shí),該測(cè)試方法會(huì)終止?墒褂肁ssert或Assertion調(diào)用斷言函數(shù)。

1:AreEquals(expected,actual[,string message])

Expected是被測(cè)試代碼的期望值,actual是被測(cè)試代碼的實(shí)際值,message是一個(gè)可選的消息,在二個(gè)值不一致時(shí)報(bào)告錯(cuò)誤。Expected和actual可以是一個(gè)對(duì)象。

對(duì)于浮點(diǎn)數(shù)的比較,使用AreEquals(expected,actual,tolerance[,string message]),其中,tolerance表示精度,0.01表示僅比較小數(shù)后二位。

2:IsNull/IsNotNull(object[,string message])

判斷一個(gè)對(duì)象是空/非空。

3:AreSame(expected,actual[,string message])

判斷Expected和actual是否是同一個(gè)對(duì)象。

4:IsTrue(bool condition[,string message])/IsFalse

判斷條件是否為真/假。

5:Fail([string message])

使測(cè)試立即失效。

五:異常處理

NUNIT框架可以捕獲任何異常,并且把它報(bào)告為一個(gè)錯(cuò)誤,這些都不需要用戶(hù)的參與

六:測(cè)試用例編寫(xiě)

NUNIT使用斷言業(yè)判斷待測(cè)試代碼是否返回正確的結(jié)果,在編寫(xiě)測(cè)試用例的過(guò)程中,經(jīng)常需要有一個(gè)正確的值作為依據(jù),與測(cè)試代碼返回的值進(jìn)行比較。在有些情況下,可以比較容易地取到這些正確的值,但有時(shí)要取得這些正確的值并不容易。如在從數(shù)據(jù)庫(kù)取數(shù)據(jù)時(shí),難以設(shè)定一個(gè)正確的值,在這種情況下,好使用一些已被測(cè)試是正確的或商用的模塊程序,將這些測(cè)試過(guò)的程序或商用模塊返回的值作為正確的值,作為一個(gè)比較參照。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd