在做事務(wù)的過程中,接觸了單元測試,利用Nunit對(duì)自己寫的方法進(jìn)行單元測試,可以提高自己提交的代碼的質(zhì)量。在這次實(shí)踐的過程中讓我感受到了單元測試的重要性,由于接觸單元測試的時(shí)間還很短,了解的東西還是很膚淺,先進(jìn)行總結(jié),以后繼續(xù)加深理解并應(yīng)用。
1. 首先,在編寫測試類之前,必須為項(xiàng)目添加指向nunit.framework.dll的引用,否則無法找到命名空間。步驟為:在資源瀏覽器中右擊引用,然后選擇添加引用NUnit.framework組件,在添加引用對(duì)話框中按選擇和確認(rèn)按鈕。接著創(chuàng)建一個(gè)測試類,并在測試類中寫測試函數(shù)。測試類前面加上 [TestFixture],測試函數(shù)前面加上[Test],只有用這兩個(gè)記號(hào)標(biāo)記的類和方法才能顯示在NUnit的任務(wù)列表中。NUnit提供了一組豐富的斷言,這些斷言作為Assert類的靜態(tài)方法,也可以調(diào)用自己要測試的函數(shù),如:
Assert.AreEqual(”寶貝id不能為空”, auctionMan.modifyTimeByAuctionId(null, DateTime.Parse(”2009-2-11 10:37:05″)));
Assert.AreEqual(”寶貝id不能為空”, auctionMan.modifyTimeByAuctionId(”", DateTime.Parse(”2009-2-11 10:37:05″)));
Assert.AreEqual(”寶貝id不是位”, auctionMan.modifyTimeByAuctionId(”d56d46d654d6″, DateTime.Parse(”2009-2-11 10:37:05″)));
auctionMan.modifyTimeByAuctionId(”f6f469edf3663eba41ca9bb60a9476″, DateTime.Parse(”2009-2-11 10:37:05″));
auctionMan.modifyTimeByAuctionId(”88ee0cbc1db1390c0f35e1a549a76862″,”");
auctionMan.modifyTimeByAuctionId(”88ee0cbc1db1390c0f35e1a549a76862″, “2009-1-10 16:37:05″);
2.其次啟動(dòng)外部調(diào)試工具為Nunit,然后啟動(dòng)調(diào)試,點(diǎn)擊運(yùn)行后,如圖所示:
3.單元測試出問題后,要進(jìn)行調(diào)試,排除bug。我們在測試函數(shù)中調(diào)用待測試的函數(shù),有些是測試正常流的,有些是測試異常流的,正常流的測試應(yīng)該是運(yùn)行通過的,異常流的測試是拋異常的。但是如果正常流拋出異常,應(yīng)該進(jìn)行定位,找出是代碼哪里出錯(cuò),這時(shí)可以設(shè)置斷點(diǎn)進(jìn)行跟蹤,當(dāng)運(yùn)行到斷點(diǎn)后,進(jìn)行逐條代碼的運(yùn)行,可以找出運(yùn)行到哪一行代碼,Nunit會(huì)報(bào)錯(cuò),同時(shí)可以把鼠標(biāo)放在變量上方,查看程序運(yùn)行時(shí),變量內(nèi)存的值,從而跟蹤程序運(yùn)行是否正確,如圖: