单元测试之道一:NUnit基础
一、單元測(cè)試的概述
1.單元測(cè)試是開(kāi)發(fā)編寫(xiě)的一小段代碼,用于檢測(cè)被測(cè)代碼的一個(gè)很小的,很明確的功能是否正確。通常而言,一個(gè)單元測(cè)試是用于判斷某個(gè)特定條件(或者場(chǎng)景)下某個(gè)特定函數(shù)的行為。執(zhí)行單元測(cè)試是了為證明某段代碼的行為確實(shí)和開(kāi)發(fā)者所期望的一致。
2.單元測(cè)試的目的是讓你對(duì)你寫(xiě)的代碼更有信心,讓你的工作更有效率.
3.通過(guò)寫(xiě)單元測(cè)試代碼,可以測(cè)試函數(shù)的結(jié)果是事達(dá)到預(yù)期的目標(biāo),而且任何時(shí)候都可以運(yùn)行單元測(cè)試代碼,看修改或者增加了新的功能時(shí)候是否引進(jìn)了新的錯(cuò)誤.通過(guò)查看單元測(cè)試代碼可以找到如何使用你寫(xiě)代碼的例子.
二、單元測(cè)試的Quick Start和Uint的使用入門(mén)
?
三、編寫(xiě)和運(yùn)行Unit測(cè)試
1.Unit的各種斷言
AreEquals:判斷兩個(gè)元數(shù)據(jù)是否相等.
AreSame:判斷兩個(gè)引用數(shù)據(jù)是否相等.
IsTrue,IsFalse:判斷布爾表達(dá)式是否是真或假.
Isull,Isnotull:判斷引用類(lèi)型是否是ull或ot ull.
Fail:斷言以失敗返回
2.斷言實(shí)行立即退出制:即按順序執(zhí)行測(cè)試代碼,只有有某一個(gè)斷言失敗,則立刻退出測(cè)試程序,顯示錯(cuò)誤.
3.NUint的編碼
引用NUint.Framework命名空間
對(duì)類(lèi)應(yīng)用TestFixture Attribute,類(lèi)必須是public ,并且有一個(gè)public void的無(wú)參的默認(rèn)構(gòu)造函數(shù)
對(duì)方法(函數(shù))應(yīng)用Test Attribute,
4.測(cè)試分組
通過(guò)對(duì)類(lèi)或方法應(yīng)用Category Attribute,就可以把類(lèi)和方法分成不同的測(cè)試組,運(yùn)行測(cè)試了可以有選擇的運(yùn)行某組或某幾組測(cè)試.
5.類(lèi)前置和后置方法,方法的前置和后置方法
類(lèi)前置和后置方法是指在類(lèi)中的其中方法執(zhí)行前和執(zhí)行后必須運(yùn)行的方法,分別是oneTimeSetup()和OneTimeTeardow(). 類(lèi)似于構(gòu)造和析構(gòu)函數(shù).
方法的前置和后置方法,是指在每個(gè)測(cè)試方法運(yùn)行前后都必須運(yùn)行的方法,分別是MySetup()和MyTeardown().
6.異常斷言
在方法中應(yīng)用ExpectedException Attibute和進(jìn)行斷言,以期望某個(gè)方法拋出某個(gè)異常.
?
單元測(cè)試之二:單元測(cè)試有哪些測(cè)試內(nèi)容?單元測(cè)試要測(cè)試哪些內(nèi)容
Right ——函數(shù)是否能得到期望的正確的結(jié)果 ?
B —— 是否所有的邊界條件都是正確的?
I? —— 反向運(yùn)算結(jié)果是否正確 ?
C ——交叉檢查結(jié)果是否正確.(換種算法來(lái)檢查結(jié)果是否一致)
E ——強(qiáng)制錯(cuò)誤條件出現(xiàn)時(shí)結(jié)果是否正確.(網(wǎng)絡(luò)斷,文件不存在等條件)
p ——是否滿(mǎn)足性能要求?
1、結(jié)果是否正確
確認(rèn)代碼能夠運(yùn)行正確
代碼所做的和你的期望是一致的!
對(duì)于有大量測(cè)試數(shù)據(jù)的測(cè)試,可考慮用一個(gè)獨(dú)立的數(shù)據(jù)文件(XML文件)
2、邊界條件是否都滿(mǎn)足?
找邊界條件是做單元測(cè)試中最有價(jià)值的工作之一,因?yàn)锽UG一般就出現(xiàn)在邊界上。
3、檢查反向運(yùn)算
對(duì)于一些方法,可以采用反向邏輯關(guān)系來(lái)驗(yàn)證他們。
比如:
A、對(duì)結(jié)果進(jìn)行平方的方式來(lái)檢測(cè)一個(gè)計(jì)算平方根的函數(shù)
B、數(shù)據(jù)庫(kù)中用查詢(xún)記錄的方式驗(yàn)證新記錄是否插入成功
4、交叉檢查
采用其他的算法驗(yàn)證結(jié)果是否跟原方法結(jié)果一致。
其他算法要驗(yàn)證能完成任務(wù),可能不是最佳的算法,只是速度太慢或太不靈活,但是對(duì)做測(cè)試非常有效。
另一種辦法:采用類(lèi)本身不同組成部分的數(shù)據(jù)。
5、強(qiáng)制產(chǎn)生錯(cuò)誤條件
強(qiáng)制引發(fā)真實(shí)世界里的錯(cuò)誤,來(lái)測(cè)試代碼是如何處理的。
比如:內(nèi)存耗光、磁盤(pán)用滿(mǎn)、時(shí)鐘出現(xiàn)問(wèn)題、網(wǎng)絡(luò)不可用、系統(tǒng)過(guò)載、顯示分辨率過(guò)高或過(guò)低等
6、性能特性
?
轉(zhuǎn)載于:https://www.cnblogs.com/chjun2000/archive/2009/11/24/1609704.html
總結(jié)
以上是生活随笔為你收集整理的单元测试之道一:NUnit基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JS 截取字符串及字符与数字转换
- 下一篇: DBCC CHECKIDENT