|
首先來(lái)看下面幾個(gè)場(chǎng)景你是否熟悉
1、你正在開(kāi)發(fā)一個(gè)系統(tǒng),你不斷地編碼-編譯-調(diào)試-編碼-編譯-調(diào)試……終于,你負(fù)責(zé)的功能模塊從上到下全部完成且編譯通過(guò)!你長(zhǎng)出一口氣,懷著激動(dòng)而又忐忑的心情點(diǎn)擊界面上的按鈕,頓時(shí)你剛剛的輕松感煙消云散:系統(tǒng)無(wú)法正常工作,你想讀的數(shù)據(jù)顯示不出來(lái),你想存的東西也送不到數(shù)據(jù)庫(kù)……于是,你再次回到IDE里,設(shè)斷點(diǎn)、調(diào)試、一層一層跟蹤,當(dāng)你精疲力盡終于將數(shù)據(jù)送到數(shù)據(jù)庫(kù)里,你又發(fā)現(xiàn)了其它問(wèn)題,于是你繼續(xù)設(shè)斷點(diǎn)、調(diào)試、編譯、調(diào)試……
2、你狂躁地敲擊著鍵盤和鼠標(biāo),咒罵著不斷出現(xiàn)的bug:啊?這里怎么沒(méi)返回值啊!哎?這里不該是0啊!不對(duì)啊,這里怎么沒(méi)數(shù)據(jù)……你永遠(yuǎn)不知道還有多少bug,你也永遠(yuǎn)不知道你的改動(dòng)會(huì)不會(huì)引入其它bug——這里有幾十個(gè)甚至上百個(gè)類,幾百幾千個(gè)方法!我不能都照顧到啊!你感覺(jué)bugs像敲擊鼴鼠游戲中的鼴鼠:打下了這個(gè),另一個(gè)又從其它洞口露出頭來(lái)……
3、也許是畢業(yè)答辯的演示,也許是客戶的審查,你小心地打開(kāi)自己要演示的系統(tǒng),進(jìn)行著預(yù)定的操作,忽然,有個(gè)功能不能正常運(yùn)行,你大汗淋漓,在答辯老師或者客戶質(zhì)疑且不滿的目光下你試了又試,但還是于事無(wú)補(bǔ)……于是,答辯老師可能扭頭便走,客戶可能憤然離去,然后離去的還有你的學(xué)位證和項(xiàng)目獎(jiǎng)金。當(dāng)后來(lái)你檢查代碼時(shí),發(fā)現(xiàn)這一切竟然只是因?yàn)橐粋€(gè)底層工具類中一個(gè)方法輸出結(jié)果為空。
如果你覺(jué)得上面的場(chǎng)景令你似曾相識(shí)甚至痛心疾首,那么你應(yīng)該看完這篇文章。
什么是單元測(cè)試
單元測(cè)試(Unit Test)的一個(gè)測(cè)試用例(Test Case)是一小段代碼,這段代碼用于測(cè)試一個(gè)小的程序功能(一般是一個(gè)方法或相關(guān)的幾個(gè)方法)行為是否正常。下面給出一個(gè)實(shí)際項(xiàng)目中單元測(cè)試用例的代碼,大家可以不用深究這段代碼中的細(xì)節(jié),這里貼這段代碼只是給大家一個(gè)直觀的感覺(jué)。
1 ///
2 /// 測(cè)試基本的添加及刪除角色是否正確
3 ///
4 [Test]
5 public void TestAddAndRemoveRole()
6 {
7 IRoleServices roleServ = UnityHelper.CreateContainer().Resolve<IRoleServices>();
8 IRoleRepository roleRep = UnityHelper.CreateContainer().Resolve<IRoleRepository>();
9 Assert.IsNotNull(roleServ);
10 Assert.IsNotNull(roleRep);
11
12 String timeStamp = DateTime.Now.ToString();
13 RoleDto newRole = new RoleDto()
14 {
15 Name = "測(cè)試角色" + timeStamp,
16 Desciption = "此角色僅供測(cè)試使用",
17 };
18 roleServ.AddRole(newRole);
19
20 RoleDto addedRole = roleRep.GetRoleByName("測(cè)試角色" + timeStamp);
21 Assert.AreNotEqual(-1, addedRole.ID);//確認(rèn)新角色添加成功
22
23 roleServ.RemoveRole(addedRole.ID);
24 Assert.AreEqual(-1, roleRep.GetRoleByName("測(cè)試角色" + timeStamp).ID);//確認(rèn)剛才添加的角色刪除成功
25 }
NET技術(shù):單元測(cè)試之道(使用NUnit),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。