您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > Nunit
使用NUnit在.Net編程中進(jìn)行單元測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/9/6 14:31:22 ] 推薦標(biāo)簽:

注意這段代碼只是為了完成類的結(jié)構(gòu),方法的實(shí)現(xiàn)暫時(shí)先空著。然后將這段代碼編譯成一個(gè)dll動(dòng)態(tài)連接庫文件:UnitTest.dll。
我們運(yùn)行NUnit的圖形測(cè)試工具,打開我們編譯好的dll文件,點(diǎn)"Run"按紐,可以看到如下畫面:
很醒目紅色,表示測(cè)試并沒有成功,不過這個(gè)是在我們的預(yù)料之中的。
接下來,我們向剛才的Ticket類中完成我們的Add方法實(shí)現(xiàn)代碼:
public void Add(int num)
{
amount += num;
}
保存,重新編譯。
切換到NUnit,再點(diǎn)Run,可以看到:
Add方法已經(jīng)變成綠色了,再接著將Sell方法也完成:
public void Sell()
{
amount -= 1;
}
再來測(cè)試,結(jié)果變成:
啊,總算變成美麗的綠色了,大家現(xiàn)在體會(huì)到環(huán)保的重要性了吧。 :)
那么可以交任務(wù)了嗎?等等,別急,還有個(gè)異常沒測(cè)試呢,如果我們的Amount小于0的話,會(huì)產(chǎn)生異常,那么,異常怎么測(cè)試呢?請(qǐng)接著看。
測(cè)試異常:
還是跟上面一樣,先寫出測(cè)試代碼:

[Test]
 [ExpectedException(typeof(Exception))]
 public void ExcpetionTesting()
 {
  Ticket ticket = new Ticket();
  ticket.Add(3);
  ticket.Sell();
  ticket.Sell();
  ticket.Sell();
  ticket.Sell();
 }

其中,[ExpectedException(typeof(Exception))]表示我們希望能捕獲到發(fā)生的異常,如果沒有捕獲到異常,則表示測(cè)試失敗。
后面的代碼很好理解,我們加了三張票,卻賣了四張出去,這可不是炒股,以后沒辦法平倉(cāng)的。 :)
編譯運(yùn)行,我們看到以下的測(cè)試畫面:
在Ticket類中,我們修改一下Sell方法,讓它變成:
public void Sell()
{
if(amount - 1 < 0)
throw new Exception("Amount不能為0");
amount -= 1;
}
編譯,再測(cè)試,結(jié)果如下:
好了,到了這里算完成我們的單元測(cè)試之旅了,大家對(duì)如何在C#中進(jìn)行單元測(cè)試一定已經(jīng)有了一個(gè)基本的認(rèn)識(shí)。另外,NUnit并不是只針對(duì)C#,事實(shí)上,你可以在任何.Net語言中使用NUnit來測(cè)試你的單元,方法都一樣。
總結(jié):
單元測(cè)試看上去雖然有點(diǎn)麻煩,但是它為程序員提供了一個(gè)安全的觀點(diǎn),讓程序員對(duì)自己的程序更加有信心,在減少開發(fā)后期進(jìn)行頻繁Debug所耗費(fèi)時(shí)間的同時(shí)也為應(yīng)用軟件提供了第一道安全防護(hù)網(wǎng),因此,單元測(cè)試是提高開發(fā)效率和軟件品質(zhì)的一個(gè)重要的手段。
利用UNint,我們可以在.Net編程過程中非常方便的進(jìn)行單元測(cè)試,它圖形化的界面和簡(jiǎn)單而強(qiáng)大的測(cè)試框架為我們提供了一個(gè)非常舒適而有趣的測(cè)試環(huán)境,能夠讓程序員覺得進(jìn)行單元測(cè)試并不枯燥乏味,習(xí)慣后甚至還能成為一種樂趣。
看完本文,如果你是引言中那個(gè)可憐的程序員的話,你現(xiàn)在一定能輕松的面對(duì)你的項(xiàng)目經(jīng)理,交上一份令人放心的代碼答卷。

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