在合作開發中一定要保證自己所編寫的代碼在上交時經過單元測試,自己要對自己寫的代碼負責。下面簡介本次開發學習使用的.net下的單元測試工具Nunit和visual studio 的單元測試外掛程式TestDriven.NET。
安裝Nunit後我們可以在VS引用中引用NunitFramework(不安裝則不會有此組件)。Nunit的使用並不複雜,在此簡單介紹幾個屬性。
<TestFixture>在測試類別前標明,表示該類下有測試案例。
<Test>標示測試案例
前兩個屬性是使用Nuit必備的屬性,而後幾個則有代碼最佳化和測試最佳化的作用了。
<Setup> ,在此屬性下已定義流程,其所在測試類別的每一個測試案例運行前都會經過此過程。也就是我們可以將大家都會用到的初始化條件放到其中。與Setup對應的有一個<TestFixtureSetup>屬性,此屬性下的過程在整個測試類別運行時只會初始化一次。而Setup則是每個測試案例都會先運行其下定義的sub過程。
屬性<TearDown>每個測試案例後都運行來確定要回收的資源,與之對應的是<TestFixtureTearDown>是所有測試案例運行完後再運行其下定義的sub。
可以說這幾個屬性都是為了令你寫的代碼卓越,減少資源的佔用等。當我們在編寫一個測試類別時,裡面可能會有很多個測試案例。而我們並不是每次都會同時運行這些測試案例,那麼就會用到了以下幾個屬性,來進行測試最佳化。
<ignore>標示哪個測試案例不運行。與其對應的有<Explicit>,標示了ignore屬性則此用例永遠不會運行,而標示了Explicit屬性如果選中了這個測試案例的話則可以運行。
還有就是我們可以將測試案例分組。使用屬性<Category("組名")>。這樣我們可以在Nunit中選擇組來測試。
Nunit給單元測試帶來了方便,不過它仍不十分完善。它不能統計我們測試的程式碼涵蓋範圍(一個檢驗我單元測試到位與否的標準),不能對所編寫的測試案例進行調試(我們在寫測試代碼時同編寫其他程式時一樣容易出錯,如果不能調試有時會很難找到哪的錯)等等。而TestDriven.NET則可以完成這些,與此同時所有操作都是在Visual studio Integration Environment下進行的。雖然TestDriven.NET也是基於Nunit的,但我們在使用它時不必另外安裝Nunit,原因是在安裝TestDrive.NET的同時會含有Nunit的安裝。不過此時我們在引用NunitFramework時會發現沒有此程式集了,但我們可以在TestDriven.NET的安裝目錄下找到此程式集(我的安裝目錄:C:/Program Files/TestDriven.NET 3/NUnit/2.5/net-2.0/framework),將其引入即可在VS IDE中進行單元測試了。這下我們的測試工作可以更輕鬆了。
做測試時要注意邊界點及此點的左右點,要充分在此考慮測試案例。還要保持我們測試後不會改變原程式中預設的狀態,此條在操作資料庫時尤為突出,我們在測試時很可能改變了資料庫中的資料,測試完後要記得回複到原資料。
總之單元測試進一步保證了我們代碼的無誤性,單元測試軟體簡化了我們的單元測試工作。