【按:有關於nunit的詳細介紹請見:《nunit2.0詳細使用方法 》 本文是個人心得和簡要總結】
二、什麼單元測試
單元測試,就是區域性測試,對於web應用程式或者windows應用程式來說,都是由很多「區域性」組成的。如果是乙個具體的web page,那麼可以通常執行、瀏覽頁面看到具體的結果,但是如果是乙個類,測試起來可能就會有一些麻煩,尤其是在類反覆繼承之後,想要檢視程式執行過程中某個類的具體實現結果和實現過程,往往就不那麼容易了。
vs ide當中包含除錯(debug)和跟蹤(trace)的功能,但是它們也有一些侷限,往往都是要對程式的整體進行測試,通過層層呼叫才能執行到某個類。
所以使用單元測試對區域性進行測試就會有更好的結果了。
使用單元測試可以很輕鬆的實現:
靜態類測試
靜態方法測試
類的例項化測試
類的方法測試
三、什麼是nunit?
單元測試通過有兩種辦法:乙個是微軟在vs提供的單元測試,另乙個是nunit,前者可能更複雜也更全面(我只實踐過一次,發現複雜是肯定有的),後者更簡潔明瞭。
五、nunit的啟動
有兩種方法,乙個是單獨啟動(通過開始選單快捷方式),這個時候需要指定已經編譯好的dll路徑;另乙個是整合在vs中啟動。
後者適合單獨開發類庫的時候使用,否則,在乙個解決方案中既有類庫,也有web應用程式,還得反覆切換「啟動專案」。
單獨啟動的時候,指定好已經編譯的dll,按下"run"按鈕,測試成功就會以綠色方式顯示,失敗就會顯示紅色,黃的部分則是通過category指令跳過。
六、最簡單使用
◆在專案(庫類)中新增nunit的引用。
nunit.framework 有針對 .net framwork 1.1和2.0兩個版本,引用的時候需要注意
◆新建乙個類
需要說明的是
i)nunit通過建立這個類的例項,和執行這個例項的方法來完成測試。它和原始的、想測試的目標類,並不相同。假如寫好乙個類classa,想要對classa進行測試,那麼現在新建的這個類就是test_for_classa
ii)為了便於敘述,文中使用命名約定:「原始類」和「測試類」
◆並且使用using指令把"nunit.framework;"命名空間包含進來
注意大小寫,在新增引用的時候是全小寫的,但是命名空間卻不是。
◆在類名稱前面加上指令:[testfixturesetup],這個類必須是public
◆新增乙個public void 方法,在這個方法前面加上 [test]指令。後文管這種方法叫做「測試方法」
◆ shift+f6或者f6生成
◆通過開始選單快捷方式啟動nunit
◆通過「檔案」選單》「開啟」,瀏覽並找到剛才生成的dll
◆按下run按鈕,nunit顯示綠色的進度條,表明測試成功。
以上就是nunit的最簡單使用,這裡其實什麼也沒有測試,只是演練一下nunit這個單元測試工具的使用。下面進一步介紹nunit的使用方法。
七、驗證設計的功能是否實現
7.1基本的測試
◆例如:類的例項化
新建乙個測試類,新增乙個「測試方法」,在這個方法中新增原始類的例項化**,這時候可以使用各種建構函式,例如(這裡使用範例**不能執行):
class a = new class();
class b = new class("abc");
使用nunit測試。如果「測試方法」測試通過顯示綠色的進度條,那就證明類的建構函式通過了測試。
◆例如:類的void方法
在「測試方法」中例項化原始類,然後再運執行相應的方法,例如(這裡使用範例**不能執行):
class a = new class();
a.go();
7.2詳細測試:斷言
以上的測試都是簡單的驗證原始類的某些**執行過程中是否出現異常。對於複雜的類來說,這些遠遠不夠,對於原始類的屬性和有返回值的方法可以使用nunit提供的assert(斷言)來測試。例如:
原始類:
public class tag
public void prase(string str)
}測試類:
[testfixture]
public class testtag
}nunit在測試的時候,就會比較t.count是否和1相等,相等則通過測試,並且通過綠色表示出來。
需要說明的是,assert.areequal只是針對值型別判斷是否相等。其它的斷言,請檢視中文幫助:
還有一些情況不能通過異常和或者斷言來判斷,那麼有兩個選擇:
a 自己在測試類當中寫私有的類業判斷
b 在控制台中輸出相關的資訊。
八、setup/teardown 指令
簡單說,就是多個測試中包含的「重合」的**,可以放到[setup]指令指導定的**當中。每個[test]方法都會在執行之前先執行[setup]執行結束再執行[teardown]。
九、testfixturesetup/testfixtureteardown 指令
這一組指令和前面的指令類似,但是又有些不同,主要的區別在於,這一組指令通常用來開啟、釋放某些共同的資源(例如資料庫連線)
十、category指令
跳過的測試
十一、explicit指令
在7.1中是驗證**能否正常執行,如果不出現異常那麼就通過測試了。在這裡explicit指令是故意驗證,**當中會不會出現某一具體的異常。
十二、輸出
根據測試的需要,可以在nunit測試的過程種在控制台輸出測試類中指定的資訊。
能過在nunit工具的「text output」選項卡可以看到測試過程中輸出的資訊。
例如:[testfixturesetup]
public void init()
ps:關於輸出,我封裝了乙個類testbase,除了輸出文字以外,還可以輸出datatable的內容。具體請見下面的鏈結。
流浪是注定的宿命;
漂泊是無盡的輪迴。
引用自 :
單元測試 NUnit
本內容摘自 單元測試之道c 版 使用nunit 編寫目的 供日後參考學習,好記心不如爛筆頭。基本語法 1 單元測試 斷言 assert 方法 areequals assert.areequals expected,actual string message 這是使用最多的斷言形式,expected ...
單元測試NUnit
在vs中新建的專案中加入nunit.framework的引用。或許我們可以這麼做測試,但顯然不專業。我們新建乙個類叫calculatortest,雖然名字可以隨意起,但是最好這麼叫,比較明顯。注意,這裡的測試方法必須是public void,且沒有引數的,方法名字可以隨意取。而且注意這裡判斷採用的a...
NUnit單元測試使用例項
1.新建.net專案 類庫 2.新增引用 nunit.framework.dll 3.編寫測試用例 test case using system using system.collections.generic using system.text using nunit.framework name...