Nunit單元測試

單元測試對程序員來說是非常重要的一門技術,但是在實際編程中卻往往被程序員所忽視。微軟的VS開發工具爲我們提供了強大的單元測試環境,在VS當中可以直接對類庫項目進行測試,極大的方便了程序員的自我糾錯能力。除了官方的解決方案之外,還有一種非常好的免費開源的第三方測試工具,那就是NUnit。它是從Java中著名的JUnit單元測試框架移植過來,這個可以從官網中得到答案,http://www.nunit.org/

在NUnit官網的下載頁面http://www.nunit.org/index.php?p=download,列出了其所有發佈過的版本,當前最新的版本號爲2.6.3。

msi是安裝版的NUnit,而bin是文件版的,還有src是NUnit的源代碼以及doc是NUnit的幫助手冊。

建議專業用戶下載bin版本,即NUnit-2.6.3.zip。裏面有綠色版的NUnit用戶界面程序,開發用的dll文件以及doc文檔手冊。

下載好zip包後,解壓到磁盤目錄下。

好,下面就正式演示使用NUnit進行單元測試。

便於簡單演示,我們用四則運算來模擬測試的過程。

首先在VS2012當中建立一個類庫項目,起名爲NUnitTest,並建立一個四則運算類Calculator。

[csharp] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. namespace NUnitTest  
  2. {  
  3.     public class Calculator  
  4.     {  
  5.         public static double Add(double a, double b)  
  6.         {  
  7.             return a + b;  
  8.         }  
  9.   
  10.         public static double Sub(double a, double b)  
  11.         {  
  12.             return a - b;  
  13.         }  
  14.   
  15.         public static double Mutiply(double a, double b)  
  16.         {  
  17.             return a * b;  
  18.         }  
  19.   
  20.         public static double Divide(double a, double b)  
  21.         {  
  22.             return a / b;  
  23.         }  
  24.     }  
  25. }  

就是一個簡單的加減乘除方法。

然後我們再建立一個單元測試類UnitTest,用於進行單元測試。

[csharp] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. namespace NUnitTest  
  2. {  
  3.     [TestFixture]  
  4.     public class UnitTest  
  5.     {  
  6.         public double NumA { getset; }  
  7.   
  8.         public double NumB { getset; }  
  9.   
  10.         [SetUp]  
  11.         public void SetUp()  
  12.         {  
  13.             NumA = 10;  
  14.             NumB = 20;  
  15.         }  
  16.   
  17.         [Test]  
  18.         public void TestAdd()  
  19.         {  
  20.             double result = Calculator.Add(NumA, NumB);  
  21.             Assert.AreEqual(result, 30);  
  22.         }  
  23.   
  24.         [Test]  
  25.         public void TestSub()  
  26.         {  
  27.             double result = Calculator.Sub(NumA, NumB);  
  28.             Assert.LessOrEqual(result, 0);  
  29.         }  
  30.   
  31.         [Test]  
  32.         public void TestMutiply()  
  33.         {  
  34.             double result = Calculator.Mutiply(NumA, NumB);  
  35.             Assert.GreaterOrEqual(result, 200);  
  36.         }  
  37.   
  38.         [Test]  
  39.         public void TestDivide()  
  40.         {  
  41.             double result = Calculator.Divide(NumA, NumB);  
  42.             Assert.IsTrue(0.5 == result);  
  43.         }  
  44.     }  
  45. }  

這裏面在方法前都加了[Test]用於標記該方法爲單元測試方法,需要添加引用nunit.framework.dll文件。這個文件可以在下載好的zip包中的NUnit-2.6.3\bin\framework目錄找到。而方法內部使用了Assert類的靜態方法對預期結果進行斷言。

下面就可以使用NUnit工具來進行測試了。我們將NUnitTest類庫項目右鍵屬性中的調試節點,設置啓動動作爲啓動外部程序,然後設置路徑爲下載zip包中的nunit.exe。如:C:\Users\guwei4037\Desktop\NUnit-2.6.3\bin\nunit.exe。


運行類庫項目,這時候爲我們啓動了NUnit的gui工具。我們按照下面的步驟進行操作。

1、選擇File——New Project,指定NUnit項目文件到指定目錄。

2、選擇Tools——IDE Support——Visual Studio,勾上選項,點擊OK。


3、選擇Project——Add VS Project

在彈出的對話框中找到NUnitTest項目的csproj文件並打開。


會看到已經把我們項目中需要測試的方法都加載到了NUnit的GUI中。

我們只需要點擊右側的“RUN”按鈕,運行測試即可。

如我們所願,所有單元測試都通過了。


這是通過運行外部程序(NUnit的GUI界面)來達到單元測試的效果的。

總感覺很麻煩,還要調用外部的應用程序,有沒有簡單點的最好能夠跟VS工具緊密結合的方式來進行NUnit單元測試呢?答案是肯定的。

我們在VS中選擇工具菜單欄下的擴展和更新,選擇聯機並在搜索框中輸入NUnit。


找到NUnit Test Adapter,下載安裝即可。按照好之後關閉VS,重啓一下就好了。

我們打開類庫項目中的UnitTest類,在右鍵彈出的菜單中點擊運行測試。


運行結束後,會在左側的測試資源管理器當中顯示本次操作的結果。


是不是很方便啊?直接在VS當中集成了,不用去配置外部程序了。

相信通過上面的介紹,你已經學會如何在VS中集成NUnit進行單元測試了。

關於更多的NUnit的參考文檔,請訪問:http://www.nunit.org/index.php?p=docHome&r=2.6.3


原文地址:http://blog.csdn.net/chinacsharper/article/details/19260205

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章