一、 單元測試
是軟件測試方法的其中一種,其中還有比如動態黑盒測試、數據測試、破壞性測試等等。
單元測試也稱之為“模塊測試”,是對程序設計中的最小單元——函數進行測試的一種方法,所謂測試,就是驗證我們自己編寫的方法能不能夠得到正確的結果,即用方法得到的結果與真實結果進行比對,這就稱之為測試。建立單元測試首先需要建立一個測試項目,具體操作如下:
二、 控制臺程序的單元測試
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 =newCalculate();
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靜態類的相關判斷方法(自己去查看定義即可)
新聞熱點
疑難解答