您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > Nunit
用Nunit自動(dòng)測(cè)試.NET代碼
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/12/7 11:24:44 ] 推薦標(biāo)簽:

 因?yàn)槲沂菑氖?Net開(kāi)發(fā)的,看到很多關(guān)于JUnit的介紹,所以在這里轉(zhuǎn)貼一篇Nunit的文章。用來(lái)平衡一下Java不如.Net的心理。

    NUnit可以使你很快、很容易地對(duì)代碼進(jìn)行單元測(cè)試。而且它是免費(fèi)的。
    by Bill Wagner
   NUnit是一組類(lèi),你可以用它在你的.NET類(lèi)上創(chuàng)建和執(zhí)行自動(dòng)的單元測(cè)試。作為對(duì)本篇文章的補(bǔ)充材料,你可以到NUnit網(wǎng)站上查看關(guān)于單元測(cè)試的價(jià)值的白皮書(shū)和文章(見(jiàn)資源)。

    你可以下載NUnit的已創(chuàng)建的類(lèi),或源代碼。我更喜歡下載源代碼。當(dāng)我訪(fǎng)問(wèn)這個(gè)站點(diǎn)時(shí),NUnit新的版本是beta 2,我需要做些修改,這樣NUnit可以在RC1下創(chuàng)建和運(yùn)行單元測(cè)試了。

    首先,你需要為NUnit生成你自己的密鑰文件(key file),因?yàn)樵创a中不包含一個(gè)密鑰文件。按下面的方式生成正確類(lèi)型的keyfile:sn -k NUnit.key

    接下來(lái),你需要改變幾個(gè)原形(prototype),因?yàn)镹Unit項(xiàng)目包含Dispose的舊版本。新的原形應(yīng)該是: virtual void Dispose (bool Disposing);
    現(xiàn)在你可以構(gòu)建NUnit,運(yùn)行它,并運(yùn)用樣例測(cè)試了。運(yùn)行NUnitGUI項(xiàng)目來(lái)加載測(cè)試,選擇Browse按鈕來(lái)載入一個(gè)程序集。如果要用樣例,需要選擇SampleMoney.dll程序集。一旦你加載了一個(gè)程序集,TypeName框會(huì)顯示已經(jīng)定義了測(cè)試的程序集的類(lèi)型。點(diǎn)擊Run按鈕,執(zhí)行所有的測(cè)試,并在窗口底部查看結(jié)果。

    運(yùn)行樣例很有用,但你可能想知道如何用你自己的代碼來(lái)創(chuàng)建和執(zhí)行測(cè)試。為了說(shuō)明如何運(yùn)用NUnit,我將為前面寫(xiě)的Source Count程序編寫(xiě)一個(gè)測(cè)試包(test suite)。NUnit用reflection在你的單元測(cè)試代碼中找到測(cè)試方法。為了創(chuàng)建一個(gè)測(cè)試包,我們只需要?jiǎng)?chuàng)建一個(gè)執(zhí)行測(cè)試的類(lèi)。你必須從 TestCase繼承這個(gè)類(lèi),TestCase是NUnit的一部分。你的新類(lèi)中的任何測(cè)試方法必須是公有的并以“test”開(kāi)頭。測(cè)試方法也應(yīng)該包含一個(gè)空的返回類(lèi)型,并不用任何參數(shù)。下面是我的測(cè)試包中的兩個(gè)測(cè)試方法:public void testComments () {
     Assert ("Checking Comment lines",
           testObj.SingleLineComments == 2);
}

public void testDocs () {
     Assert
     ("Testing Documentation lines",
     testObj.DocumentationComments == 3);
}
    Assert方法(是NUnit的一部分)對(duì)測(cè)試結(jié)果進(jìn)行檢查。你可以用一個(gè)字符串來(lái)說(shuō)明哪個(gè)測(cè)試失敗了。一些測(cè)試包在運(yùn)行前需要設(shè)置或拆分代碼; TestCase類(lèi)為此提供了虛擬的函數(shù)。在我的測(cè)試中,我用了SetUp方法來(lái)初始化源代碼計(jì)數(shù)器:protected override void SetUp () {
     testObj = new CountStats ();
     StringReader reader = new
           StringReader (theTest);
     testObj.ProcessFile(reader);
}

    后,你需要一個(gè)靜態(tài)的方法來(lái)返回ITest接口。NUnit用了一個(gè)構(gòu)造器使這項(xiàng)工作變得很簡(jiǎn)單。你可以用類(lèi)型信息為任何測(cè)試包創(chuàng)建ITest接口:public static ITest createSuite {
     get {
           return new TestSuite (typeof
                 (MySuite));
     }
}


    這可以了。在列表1中你可以看到整個(gè)測(cè)試類(lèi)。這并不是一個(gè)完整的測(cè)試包,但通過(guò)它,你仍可以對(duì)如何在你自己的項(xiàng)目中運(yùn)用NUnit有一定的了解。

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