asp.net單元測試及查看代碼覆蓋率詳細示例


在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM