下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.單元測(cè)試/china/MSDN/library/archives/library/dncscol/html/csharp03202003.asp一:什么是單元測(cè)試,為什么要進(jìn)行單元測(cè)試?編寫單元測(cè)試是一種驗(yàn)證行為,更是一種設(shè)計(jì)行為。同樣,它更是一種編寫文檔的行為。編寫單元測(cè)試避免了相當(dāng)數(shù)量的反饋循環(huán),尤其是功能驗(yàn)證方面的反饋循環(huán)。在程序設(shè)計(jì)過程中會(huì)有許多種測(cè)試,單元只是其中的一種,單元測(cè)試并不能保證程序是完美無缺的,但是在所有的測(cè)試中,單元測(cè)試是第一個(gè)環(huán)節(jié),也是最重要的一個(gè)環(huán)節(jié)。單元測(cè)試是一種由程序員自行測(cè)試的工作。簡(jiǎn)單點(diǎn)說,單元測(cè)試就是測(cè)試代碼
2、撰寫者依據(jù)其所設(shè)想的方式執(zhí)行是否產(chǎn)生了預(yù)期的結(jié)果。二:如何單元測(cè)試? NUnit Framework,你唯一需要作的事,是使用正確的Attribute來描述你的test classes及test methods。NUnit提供了許多不同的attributes,讓你可以自由的寫你想要的unit tests。這些attributes可以用來定義test fixtures(見下一段解釋)、test methods,以及setup及teardown的methods(預(yù)備及善后工作的methods)。除此之外,還有其它的attributes可以來設(shè)定預(yù)期發(fā)生的exceptions,或者要求Test Ru
3、nner跳過某些test method不執(zhí)行。三:NUnit Framework的一些常用屬性?1. TestFixture attribute主要是用在class上,其作用是標(biāo)志該class含有需要執(zhí)行的test methods。2. TestFixtureSetUp 和TestFixtureTearDown這兩個(gè)主要用在TestFixture里面,其作用是提供一組函數(shù)執(zhí)行任何測(cè)試運(yùn)行之前(TestFixtureSetUP)和最后一個(gè)測(cè)試執(zhí)行后(TestFixtureTearDown)。每一個(gè)TestFixture只能有一個(gè)TestFixtureSetUp方法和TestFixtureTear
4、Down方法。如果一個(gè)以上的TestFixtureSetUp和TestFixtureTearDown方法,可以通過編譯但是不會(huì)執(zhí)行。注意一個(gè)TestFixture可以擁有一個(gè)TestFixtureSetUp和一個(gè)SetUp,也可以擁有一個(gè)TestFixtureTearDown和一個(gè)TearDown方法。 TestFixtureSetUp 和 TestFixtureTearDown 被用在不方便使用SetUp和TearDown方法。一般情況使用 SetUp 和TearDown attributes。3. Test attribute主要用來標(biāo)示在text fixture中的method,表示這個(gè)
5、method需要被Test Runner application所執(zhí)行。有Test attribute的method必須是public的,并且必須return void,也沒有任何傳入的參數(shù)。如果沒有符合這些規(guī)定,在Test Runner GUI之中是不會(huì)列出這個(gè)method的,而且在執(zhí)行Unit Test的時(shí)候也不會(huì)執(zhí)行這個(gè)method。上面的程序代碼示范了使用這個(gè)attribute的方法。4. 在執(zhí)行每一個(gè)test method之前(或之后)先作一些預(yù)備或善后工作。當(dāng)然,可以寫一個(gè)private的method,然后在每一個(gè)test method的一開頭或最末端呼叫這個(gè)特別的method?;?/p>
6、者,也可以使用我們要介紹的SetUp及Teardown Attributes來達(dá)到相同的目的。一般來說,Setup Attribute及Teardown Attribute被用來預(yù)備一些必須的objects(對(duì)象),例如database connection、等等。5. 程序在某些特殊的條件下會(huì)產(chǎn)生一些特定的exception。要用Unit Test來測(cè)試程序是否如預(yù)期的產(chǎn)生exception,你可以用一個(gè)try.catch的程序區(qū)段來catch(捕捉)這個(gè)exception,然后再設(shè)一個(gè)boolean的值來證明exception的確發(fā)生了。這個(gè)方法固然可行,但是太花費(fèi)功夫。事實(shí)上,你應(yīng)該使用
7、這個(gè)ExpectedException attribute來標(biāo)示某個(gè)method應(yīng)該產(chǎn)生哪一個(gè)exception,當(dāng)你使用這個(gè)attribute的時(shí)候,你要明確的指明所預(yù)期的exception是哪個(gè)type(類型信息)的。6. 標(biāo)示某個(gè)test method,叫Test Runner在執(zhí)行的時(shí)候,略過這個(gè)method不要執(zhí)行。使用Ignore attribute。7. Assert class提供了一系列的static methods,讓你可以用來驗(yàn)證主要程序的結(jié)果與你所預(yù)期的是否一樣。四:如何執(zhí)行你所寫的Unit Tests?1. NUnit里面有兩個(gè)已經(jīng)寫好的Test Runner app
8、lications:一個(gè)是窗口GUI程序,一個(gè)是console XML(命令列)程序。你可以自由選擇你所喜歡的方式,五: 資料 -NUNIT使用說明 一:軟件及安裝免費(fèi),開源的單元測(cè)試軟件。安裝只要運(yùn)行安裝程序,按所有缺省設(shè)置即可。NUNIT:NUNIT ADDIN :/projects/nunitaddin/二:DLL的測(cè)試1:新建一個(gè)Class Library PROJECT,2:加入待測(cè)試DLL的引用,3:加入NUnit.Framework.dll的引用4:在文件開頭加入:using NUnit.Framework5:在
9、待測(cè)試的類前加入:TestFixture6:在待測(cè)試的方法前加入:Test7:啟動(dòng)NUNIT-GUI,新建項(xiàng)目,將新建的Class Library PROJECT加入,執(zhí)行。三:Attribute簡(jiǎn)介1:TestFixture:每個(gè)待測(cè)試的類前必須加該Attribute?!咀⒁狻看郎y(cè)試類需要有一個(gè)public的default constructor(或者是沒有定義任何的constructor)2:Test:每個(gè)測(cè)試的類中待測(cè)試的函數(shù)前必須加該Attribute。【注意】有Test attribute的method必須是public的,并且必須return void,也沒有任何傳入的參數(shù)。如果沒
10、有符合這些規(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和TestFixtureT
11、earDown方法,可以通過編譯但是不會(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)介 在寫Unit Tests的時(shí)候,有時(shí)你會(huì)需要在執(zhí)行每一個(gè)test method之前(或之后)先作一些預(yù)備或善后工作。當(dāng)然
12、,你可以寫一個(gè)private的method,然后在每一個(gè)test method的一開頭或最末端呼叫這個(gè)特別的method?;蛘?,你可以使用我們要介紹的SetUp及Teardown Attributes來達(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í)行。一般來說,Setup Attribute及Teardown
13、 Attribute被用來預(yù)備一些必須的objects(對(duì)象),例如database connection、等等。5:Attribute說明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è)試案例1TearDown:在每個(gè)測(cè)試案例運(yùn)行后執(zhí)行SetUp:在每個(gè)測(cè)試案例運(yùn)行前執(zhí)行Sub:測(cè)試案例2TearDown:在每個(gè)測(cè)試案例運(yùn)行后執(zhí)行TestFixtureTearDown:在一個(gè)測(cè)
14、試類中只執(zhí)行一次,且在所有測(cè)試案例運(yùn)行后執(zhí)行ExpectedException:檢測(cè)拋出異常TestExpectedException(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或Assertio
15、n調(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è)試立即失效。五:異常處理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)保密規(guī)范制度
- 2026湖南懷化國(guó)際陸港經(jīng)濟(jì)開發(fā)區(qū)內(nèi)國(guó)有企業(yè)招聘4人備考題庫(kù)附答案
- 2026福建省福清市向陽幼兒園招聘考試備考題庫(kù)附答案
- 2026西安工業(yè)大學(xué)招聘?jìng)淇碱}庫(kù)附答案
- 2026貴州湄潭縣人民醫(yī)院招聘編制外緊缺醫(yī)務(wù)人員參考題庫(kù)附答案
- 2026重慶醫(yī)科大學(xué)編外聘用人員招聘1人(2026年第1輪)備考題庫(kù)附答案
- 2026陜西選調(diào)生哪些學(xué)校有資格參加參考題庫(kù)附答案
- 中共南充市委社會(huì)工作部關(guān)于公開招聘南充市新興領(lǐng)域黨建工作專員的(6人)考試備考題庫(kù)附答案
- 中國(guó)農(nóng)業(yè)科學(xué)院2026年度第一批統(tǒng)一公開招聘參考題庫(kù)附答案
- 樂山職業(yè)技術(shù)學(xué)院2025年下半年公開考核招聘工作人員備考題庫(kù)附答案
- 2026年大連雙D高科產(chǎn)業(yè)發(fā)展有限公司公開選聘?jìng)淇碱}庫(kù)及答案詳解(奪冠系列)
- 團(tuán)隊(duì)建設(shè)與協(xié)作能力提升工作坊指南
- 2025成人腸造口護(hù)理指南課件
- 電焊工安全宣講課件
- 水泵基礎(chǔ)知識(shí)培訓(xùn)課件教學(xué)
- 內(nèi)鏡院感培訓(xùn)課件
- 2026中征(北京)征信有限責(zé)任公司招聘13人考試題庫(kù)附答案
- 期末重點(diǎn)易錯(cuò)知識(shí)點(diǎn)復(fù)習(xí)(課件)-2025-2026學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 醫(yī)療資源合理分配
- 2026年楊凌職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)含答案詳解
- 2025云南昆明元朔建設(shè)發(fā)展有限公司第二批收費(fèi)員招聘9人筆試考試參考題庫(kù)及答案解析
評(píng)論
0/150
提交評(píng)論