Nunit
單元測試框架
NUnit是一個單元測試框架,專門針對於.NET來寫的。其實在前面有JUnit(Java),CPPUnit(C++),他們都是xUnit的一員。
NUnit是一個單元測試框架,專門針對於.NET來寫的。其實在前面有JUnit(Java),CPPUnit(C++),他們都是xUnit的一員。最初,它是從JUnit而來。接下來我所用的都是基於這個版本.
最重要的一點是它適合於所有.NET語言.
NUnit最初是由James W. Newkirk, Alexei A. Vorontsov 和Philip A. Craig, 後來開發團隊逐漸龐大起來。在開發過程中, Kent Beck 和Erich Gamma2位牛人也提供了許多幫助。看來對於NUnit還真是下了一番力氣了。
NUnit是xUnit家族種的第4個主打產品,完全由C#語言來編寫,並且編寫時充分利用了許多.NET的特性,比如反射,客戶屬性等等.
最重要的一點是它適合於所有.NET語言.
從中我們可以非常容易發現,右邊是個狀態條,圖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菜單有以下內容:
Expand一層層擴展現在樹中所選節點
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輸出流的文本消息。
常用屬性:
接下來,我將講述這個框架如何使用。同時也涉及到一些非常重要的概念,我想其客戶屬性是非常重要的。在NUnit里,有以下幾種屬性:
Test Fixture
下面我將對每種屬性一一講解.
TestFixtureAttribute
本屬性標記一個類包含測試,當然setup和teardown方法可有可無.(關於setup 和teardown方法在後面介紹)
做為一個測試的類,這個類還有一些限制
必須是Public,否則NUnit看不到它的存在.
它必須有一個預設的構造函數,否則是NUnit不會構造它.
構造函數應該沒有任何副作用,因為NUnit在運行時經常會構造這個類多次,如果要是構造函數要什麼副作用的話,那不是亂了.
程序運行界面