C#的單元測試方法
一、 單元測試
是軟體測試方法的其中一種,其中還有比如動態黑盒測試、資料測試、破壞性測試等等。
單元測試也稱之為“模組測試”,是對程式設計中的最小單元——函式進行測試的一種方法,所謂測試,就是驗證我們自己編寫的方法能不能夠得到正確的結果,即用方法得到的結果與真實結果進行比對,這就稱之為測試。建立單元測試首先需要建立一個測試專案,具體操作如下:
二、 控制檯程式的單元測試
1、 首先建立一個類庫專案,裡面包含一個計算類Calculate.cs,該類裡面包含一個計算加法的方法Add,宣告如下:
namespace核心類
{
publicclassCalculate
{
publicdouble Add(double d1,double d2)
{
return d1 + d2;
}
}
}
生成專案之後會有一個“核心類.dll”,
那麼這個方法需要進行測試,就要建立一個測試專案,建立對應的測試專案有兩種方法:
2、 建立測試專案
方法一、
在解決方案中再新增一個新的測試專案,“右擊/新增/新建專案”,在左側選擇“測試”模板,確定即可,如下
namespace測試類
{
[TestClass]
publicclassCalculateTest1
{
[TestMethod]
publicvoid AddMethod1()
{
Calculate cal =
double d1 = 110;
double d2 = 220;
Assert.AreEqual(cal.Add(d1,d2),230);
}
}
}
注意我們需要手動更改類名和方法名,都改成以Test1和Method1結尾。生成解決方案的時候,我們開啟“測試資源管理器視窗”及執行選單命令“測試/視窗/測試資源管理器”就可以了,然後就可以看見每一個對應的方法所對應的測試方法名稱,我們可以選擇執行單個方法,也可以選擇執行所有的測試方法。那麼測試的方法體怎麼去寫呢?
由於測試本來的意義就是驗證一個方法你能不能得到正確的計算結果,所以我們需要找出一個正確的計算結果,與方法計算的結果進行比較就可以了,實現如下:
using System;
usingMicrosoft.VisualStudio.TestTools.UnitTesting;
using核心類; //這裡需要先手動新增自定義的程式集
namespace測試類
{
[TestClass]
publicclassCalculateTest1
{
[TestMethod]
publicvoid AddMethod1() //這是方法體部分
{
Calculate cal = newCalculate();
double d1 = 110;
double d2 = 220;
Assert.AreEqual(cal.Add(d1,d2),330); //使用Assert靜態類
}
}
}
然後在測試資源管理器中執行該方法的測試結果,執行能夠正常通過,如果將上面的330改為230,很顯然,兩者結果不相等,測試不通過,會在測試資源管理器中顯示出來。
方法二、
不需要手動新增測試專案,讓VS自動完成,具體操作如下:
在需要進行測試的方法上即Add上“右擊/建立單元測試”,VS會自動建立一個測試專案,如下所示:
namespace核心類.Tests
{
[TestClass()]
publicclassCalculateTests
{
[TestMethod()]
publicvoid AddTest()
{
Calculate cal = newCalculate();
Assert.AreEqual(cal.Add(200, 300), 500);
}
}
}
測試方法體是自己新增的。其他的操作一樣。
三、 注意事項
在測試類中必須要引入的名稱空間
usingMicrosoft.VisualStudio.TestTools.UnitTesting;
自動建立的測試專案我們不用管,但是如果是自己手動建立的測試專案還必須手動新增程式集
Microsoft.VisualStudio.QualityTools.UnitTestFramework
1、測試專案和被測試專案之間的名稱是具有關係的,具體如下對應關係
(測試專案名——測試專案名Tests)
(名稱空間——名稱空間.Tests)
(測試類名——測試類名Tests)
(測試方法——測試方法Test)
2、在測試類中,類必須使用特性[TestClass()]或者是[TestClass]修飾,測試的方法必須使用[TestMethod()]或者是[TestMethod]修飾,
3、測試方法的返回型別必須為void ,並且測試函式不能夠有引數
4、在測試方法中的程式碼一般都是分為以下兩個步驟
(1) 建立測試類的物件Calculate cal = newCalculate();
(2) 使用斷言來判斷測試結果Assert.AreEqual(cal.Add(200, 300), 500);
5、Assert靜態類的相關判斷方法(自己去檢視定義即可)