在vs2008中創建單元測試
一,打開vs2008,創建一個類庫VSTSDemo。
因為我在學習的時候用的就是vs2008,其它版本的vs,方法應該差不多,大家自己研究吧 :)
刪除掉默認生成的類,然后創建一個LogonInfo類,然后我們在這個類中寫一個很簡單的獲取最大值的方法GetMax(int[] aryNum).方法的代碼如下:
namespace VSTSDemo
{
public class LogonInfo
{
public int GetMax(int[] aryNum)
{
if (aryNum == null || aryNum.Length == 0)
{
return -1;
}
if (aryNum.Length == 1)
{
return aryNum[0];
}
int n = aryNum[0];
for (int i = 1; i < aryNum.Length; i++)
{
if (aryNum[i] > n)
{
n = aryNum[i];
}
}
return n;
}
}
}
這個方法就不解釋了,很簡單,應該一看就明白。它的功能就是從aryNum數組中找出最大的一個值。
二,創建單元測試項目
將鼠標移動到GetMax類名上面,右鍵,選擇選項,創建單元測試,如下圖:
這時候會彈出一個"創建單元測試"的操作框,我們直接點確定,然后輸入新項目的名稱LogonInfoTest,如下圖:
確定完成后,vs會自動生成LogonInfoTest測試項目與一個Solution Items文件夾,且自動在LogonInfoTest項目下生成一個LogonInfoTest.cs文件,如下圖:
注意:上面代碼中的 Assert.Inconclusive("驗證此測試方法的正確性") 是我手動注釋掉了。這行會默認生成,但沒有什么用。如果不想默認生成,可以在創建單元測試時點擊設置,把默認生成這一行代碼的選項勾掉。
三,開始測試方法LogonInfo
在開始測試前,我們需要改寫一下GetMaxTest()方法
/// <summary>
///GetMax 的測試
///</summary>
[TestMethod()]
public void GetMaxTest()
{
LogonInfo target = new LogonInfo();
int[] aryNum = new int[] { 1, 3, 4 }; // 這里為aryNum賦一個初始值
int expected = 4; // 這里設置是GetMax方法預期值,從上面的初始值及GetMax方法的本意我們知道預期值應該是4
int actual;
actual = target.GetMax(aryNum);
Assert.AreEqual(expected, actual); //這里判斷expected與actual是否相等,如果相等,則判定測試成功,反之失敗
//Assert.Inconclusive("驗證此測試方法的正確性。");
}
注意Assert.AreEqual(expected, actual)這一行代碼,Assert.AreEqua是測試expected和actual是不是相等,相等就認為成功,不相等就認為失敗。同樣用來判定的方法共有以下幾個:
Assert.AreEqual() 測試指定的值是否相等,如果相等,則測試通過;
Assert.Inconclusive() 表示一個未驗證的測試;
Assert.IsTrue() 測試指定的條件是否為True,如果為True,則測試通過;
Assert.IsFalse() 測試指定的條件是否為False,如果為False,則測試通過;
Assert.IsNull() 測試指定的對象是否為空引用,如果為空,則測試通過;
Assert.IsNotNull() 測試指定的對象是否為非空,如果不為空,則測試通過;
代碼改寫完成后,我們打開vs菜單上的"測試"->"窗口"->"測試視圖",會出現測試視圖窗口,如下圖:
在測試視圖窗口中列出了所有我們創建的測試方法,鼠標移動到GetMaxTest方法上面,在右鍵中選擇"運行選定內容",測試就開始啦。測試的結果會顯示在"測試結果"的窗口中,如下圖:
從上面的結果我們就可以知道方法測試是否通過了。然后我們也可以改變測試方法GetMaxTest()中的初始值與預期值,再次運行測試方法查看測試結果。
代碼覆蓋率
代碼覆蓋率指的就是在運行測試案例時,案例運行時所執行的代碼范圍程度。代碼覆蓋率越高,說明案例越好。被測代碼中每個可執行語句都被執行到了,測試出來的結果也就是越穩定。比如,在單元測試中,代碼覆蓋率必須達到80%或90%,這樣,就要求我們好好編寫測試案例了。
那么要如何查看代碼的覆蓋率呢?我們雙擊文件夾Solution Items下的LocalTestRun.testrunconfig文件。在彈出來的窗口中來設置要查看代碼覆蓋率的方法,如下圖:
運行測試方法后,我們打開vs菜單上的"測試"->"窗口"->"代碼覆蓋率結果"窗口,在窗口中雙擊要查看代碼覆蓋率的方法,如下圖:
覆蓋率的結果如下圖:
其中橙色的代碼表示部分執行了,紅色代碼表示沒有執行,藍色代碼表示全部執行了。當然,這個顏色可以在"工具"->"選項"->"字體和顏色"中自定義。
本文來自:.Net學習網 http://www.lmwlove.com/ac/ID858