NUnit是一個單元測試框架,專門針對于.NET來寫的.其實在前面有JUnit(Java),CPPUnit(C++),他們都是xUnit的一員.最初,它是從JUnit而來.接下來我所用的都是基于這個版本.
NUnit最初是由James W. Newkirk, Alexei A. Vorontsov 和Philip A. Craig, 后來開發團隊逐漸龐大起來.在開發過程中, Kent Beck 和Erich Gamma2位牛人也提供了許多幫助.看來對于NUnit還真是下了一番力氣了。
NUnit是xUnit家族種的第4個主打產品,完全由C#語言來編寫,并且編寫時充分利用了許多.NET的特性,比如反射,客戶屬性等等.
最重要的一點是它適合于所有.NET語言.
NUnit怎么安裝:
然后掛在VS2010外部工具這個地方來使用,工具—>外部工具—>添加—>標題:Nunit—>命令:安裝路徑—>確定。
然后打開Nunit,工具—>Nunit。
從中我們可以非常容易發現,右邊是個狀態條,圖1是紅色的,圖2是綠色的.為什么會這樣呢?因為如果所有測試案例運行成功,就為綠色,反之如果有一個不成功,則為紅色,但也有黃色的.左面的工作域內則是我們寫的每一個單元測試.
通過上面的圖片,我想你對NUnit有個總的了解了.
接下來還是分為2個部分,一是NUnit的布局,另外一部分就是它的核心概念.
首先熟悉一下NUnit GUI的布局.
讓我們更進一步看一下測試運行器窗口的布局。在右邊面板的中間,可以看到測試進度條。進度條的顏色反映了測試執行的狀態:
綠色 描述目前所執行的測試都通過
黃色 意味某些測試忽略,但是這里沒有失敗
紅色 表示有失敗
底部的狀態條表示下面的狀態:
狀態.說明了現在運行測試的狀態。當所有測試完成時,狀態變為Completed.運行測試中,狀態是Running:
Test Cases說明加載的程序集中測試案例的總個數。這也是測試樹里葉子節點的個數。
Tests Run 已經完成的測試個數。
Failures 到目前為止,所有測試中失敗的個數.
Time 顯示運行測試時間(以秒計)
File主菜單有以下內容:
New Project允許你創建一個新工程。工程是一個測試程序集的集合。這種機制讓你組織多個測試程序集,并把他們作為一個組對待。
Open 加載一個新的測試程序集,或一個以前保存的NUnit工程文件。
Close關閉現在加載的測試程序集或現在加載的NUnit工程。
Save 保存現在的Nunit工程到一個文件。如果正工作單個程序集,本菜單項允許你創建一個新的NUnit工程,并把它保存在文件里。
Save As允許你將現有NUnit工程作為一個文件保存。
Reload 強制重載現有測試程序集或NUnit工程。NUnit-Gui自動監測現加載的測試程序集的變化。
當程序集變化時,測試運行器重新加載測試程序集。(當測試正運行時,現在加載的測試程序集不會重新加載。在測試運行之間測試程序集僅可以重新加載。一個忠告:如果測試程序集依賴另外一個程序集,測試運行器不會觀察任何依賴的程序集。對測試運行器來說,強制一個重載使全部依賴的程序集變化可見。
Recent Files 說明5個最近在NUnit中加載的測試程序集或NUnit工程(這個列表在Windows注冊表,由每個用戶維護,因此如果你共享你的PC,你僅看到你的測試)。最近程序集的數量可以使用Options菜單項修改,可以訪問Tool主菜單。
Exit退出。
View菜單有以下內容:
Collapse 折疊現在樹中選擇的節點
Expand All遞歸擴展樹中所選節點后的所有節點
Collapse All遞歸折疊樹中所選節點后的所有節點
Expand Fixtures擴展樹中所有代表測試fixture的節點。
Collapse Fixtures 折疊樹中所有代表測試fixture的節點。
Properties 顯示樹中現所選節點的屬性。
Tools 菜單由這些項:
Save Results as XML作為一XML文件保存運行測試的結果。
Options讓你定制NUnit的行為。
現在看看右邊,你已經熟悉Run按鈕和進度條。這里還有一個緊跟Run按鈕的Stop按鈕:點擊這個按鈕會終止執行正運行的測試。進度條下面是一個文本窗口,在它上方,由以下4個標簽:
Errors and Failures 窗口顯示失敗的測試。在我們的例子里,這個窗口是空。
Tests Not Run 窗口顯示沒有得到執行的測試。
Console.Error 窗口顯示運行測試產生的錯誤消息。這些此消息是應用程序代碼使用Console.Error輸出流可以輸出的。
Console.Out窗口顯示運行測試打印到Console.Error輸出流的文本消息。
常用屬性:
Test Fixture
Test
下面我將對每種屬性一一講解.
TestFixtureAttribute
本屬性標記一個類包含測試,當然setup和teardown方法可有可無.(關于setup 和teardown方法在后面介紹)
做為一個測試的類,這個類還有一些限制
必須是Public,否則NUnit看不到它的存在.
它必須有一個缺省的構造函數,否則是NUnit不會構造它.
構造函數應該沒有任何副作用,因為NUnit在運行時經常會構造這個類多次,如果要是構造函數要什么副作用的話,那不是亂了.