這兩天研究了兩天的Nunit,談一下我對(duì)Nunit的認(rèn)識(shí)~
Nunit是C#的單元測(cè)試工具,現(xiàn)在用Nunit進(jìn)行單元測(cè)試的。
目前使用Nunit的公司,很多是采用TDD開(kāi)發(fā)模式的公司。所謂的TDD是“測(cè)試驅(qū)動(dòng)開(kāi)發(fā)”的敏捷開(kāi)發(fā)模式。
舉個(gè)例子說(shuō)明一下,什么叫做“測(cè)試驅(qū)動(dòng)開(kāi)發(fā)”模式:
使用NUnit在.Net編程中進(jìn)行單元測(cè)試
我收集的,大家有興趣可以看看,不過(guò)實(shí)際的執(zhí)行圖片我發(fā)不上來(lái),大家將一下咯
內(nèi)容:
摘要:
本文通過(guò)一個(gè)詳實(shí)的例子,詳細(xì)介紹了如何在C#中利用NUnit單元測(cè)試框架進(jìn)行應(yīng)用程序類(lèi)的單元測(cè)試工作。
--------------------------------------------------------------------------------
目錄:
引言
什么是單元測(cè)試
測(cè)試先行
測(cè)試異常
總結(jié)
--------------------------------------------------------------------------------
引言:
舉一個(gè)可能會(huì)發(fā)生在你身邊的事件將更能貼近實(shí)際,幸好我們現(xiàn)在有一件在程序員看來(lái)非常普通的任務(wù):
你第上班,你的項(xiàng)目經(jīng)理拿給你一疊不算厚的文檔,告訴你的任務(wù)是按照文檔中的要求編寫(xiě)一個(gè).Net類(lèi),可能因?yàn)槿蝿?wù)并不復(fù)雜,所以他看上去非常的隨意。
能否很好的完成任務(wù)對(duì)你來(lái)說(shuō)非常特殊,你拿過(guò)來(lái)后快速略過(guò)了前面大段的項(xiàng)目介紹,因?yàn)槟阒滥切⿲?duì)你并不重要,印象中好象是一個(gè)關(guān)于售票系統(tǒng)的工程。很快,你找了你需要關(guān)注的重點(diǎn):類(lèi)的需求說(shuō)明文檔。你詳細(xì)的看了一遍,感覺(jué)并不復(fù)雜,類(lèi)名Ticket,有一個(gè)只讀的int型公共的屬性,名稱是Amount,還有兩個(gè)方法,一個(gè)是名稱是Sell,功能是將Amount減去一,表示賣(mài)掉了一張票,當(dāng)然,票可不能為負(fù)數(shù),如果是的話,拋出一個(gè)異常說(shuō)明原因。另一個(gè)是Add,它有一個(gè)int型的參數(shù),功能是將這個(gè)參數(shù)的值加到Amount中去,可能是表示進(jìn)票之類(lèi)的事情吧,你不太關(guān)心,反正這個(gè)程序很簡(jiǎn)單,你掩飾住內(nèi)心的狂喜,打開(kāi)電腦,調(diào)出編輯器,開(kāi)始準(zhǔn)備寫(xiě)程序了。
"喂,等等",項(xiàng)目經(jīng)理不知道什么時(shí)候又轉(zhuǎn)回來(lái)了,"我想知道你打算怎么進(jìn)行單元測(cè)試,我關(guān)心的是這個(gè)"。
"什么是單元測(cè)試?"你轉(zhuǎn)過(guò)頭一臉沮喪的看著失望的項(xiàng)目經(jīng)理。
--------------------------------------------------------------------------------
什么是單元測(cè)試:
在程序設(shè)計(jì)過(guò)程中會(huì)有許多種測(cè)試,單元只是其中的一種,單元測(cè)試并不能保證程序是完美無(wú)缺的,但是在所有的測(cè)試中,單元測(cè)試是第一個(gè)環(huán)節(jié),也是重要的一個(gè)環(huán)節(jié)。單元測(cè)試是一種由程序員自行測(cè)試的工作。簡(jiǎn)單點(diǎn)說(shuō),單元測(cè)試是測(cè)試代碼撰寫(xiě)者依據(jù)其所設(shè)想的方式執(zhí)行是否產(chǎn)生了預(yù)期的結(jié)果。關(guān)于單元測(cè)試的重要性已經(jīng)有許多文章做了很多深入的分析,這里不再贅述。
NUnit是一個(gè)為Net準(zhǔn)備的自動(dòng)化單元測(cè)試框架,它的作用是幫助你方便的完成單元測(cè)試工作,同鼎鼎有名的JUnit一樣,都是xUnit家族的成員。它的下載地址是:http://www.nunit.org。
--------------------------------------------------------------------------------
測(cè)試先行:
"什么?先寫(xiě)測(cè)試?"你一定非常驚訝,對(duì)!是先來(lái)編寫(xiě)測(cè)試代碼,按照極限編程(XP)的理論,寫(xiě)測(cè)試是對(duì)軟件進(jìn)行設(shè)計(jì)的過(guò)程,它的重要性甚至超過(guò)了實(shí)際完成功能的代碼。先將測(cè)試寫(xiě)完,然后再來(lái)完成代碼,這樣,所有的測(cè)試通過(guò)之日也是程序完成之時(shí)。
首先,我們將NUnit提供的要nunit.framework.dll文件引入到工程中,并創(chuàng)建一個(gè)名為T(mén)icketTest的類(lèi):
[TestFixture]
public class TicketTest
{
[Test]
public void Add()
{
Ticket ticket = new Ticket();
ticket.Add(100);
Assertion.AssertEquals(100, ticket.Amount);
}
}