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