Visual Studio 內建的 Code Coverage 工具

Visual Studio 一直有內建計算 code coverage 的工具。在 Visual Studio 2012,只要是 Ultimate 或是 Premium 版本,就可以直接使用內建的 code coverage 工具。

之前有跑過 EclEmma 的範例,這次我用一樣的程式碼方便比較。

首先,我先建立一個新的 project,輸入了 production code:

namespace CoverageTest
{
    public class Program
    {
        public static bool isOddOrPositive(int number)
        {
            if (number > 0 || number % 2 == 1)
                return true;
            else
                return false;
        }
    }
}

再來,我建立了一個新的 Unit Test Project,根據範例的格式,輸入了測試碼:

using Microsoft.VisualStudio.TestTools.UnitTesting;
using CoverageTest;

namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest
    {
        [TestMethod]
        public void TestMethod1()
        {
            Assert.IsTrue(Program.isOddOrPositive(1));
        }
    }
}

再來只要執行 TEST -> Analyze Code Coverage -> All Tests,稍待一會兒,就可以從 Code Coverage Results 的視窗中看到計算結果。

螢幕快照 2014-06-15 下午10.04.07 2

我們可以看到,有 2 個 Block 沒有被跑到,比率為 50%。

除了用 Block 來計算以外,你也可以在欄位處按滑鼠右鍵 -> Add/Remove Columns,加入以 Line 為計算單位的顯示欄位。

另外,點擊下方的圖示,也可以加入顏色標記,讓你清楚分辨哪些程式碼沒有被跑到,下面是打開顏色標記的結果:

螢幕快照 2014-06-15 下午10.04.07

黃色的部分指的是 Partially Covered,以這個範例來說,if 條件判斷的地方,只有跑到前面的 number > 0 就已經結束,後面的 number % 2 == 1 並沒有跑到。

參考資料

官方說明

廣告

One thought on “Visual Studio 內建的 Code Coverage 工具

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s