天天看點

VS 2012 單元測試簡單配置

寫算法時大多依靠簡單輸入驗證,經常遇到小範圍輸入正常,大範圍或特殊情況輸入結果錯誤的問題。是以寫程式之前最好先想好幾個特殊用例來測試,以驗證算法是否正确。單元測試就是個不錯的工具,而VS 2012提供了很友善的單元測試功能。

首先建立需要測試的C++項目,如果已有項目,可以跳過這個步驟。然後建立兩個檔案algs4.h和main.cpp,代碼如下:

algs4.h

int add(int a, int b)
{
    return a+b;
}
 
int minus(int a, int b)
{
    return a-b;
}      

main.cpp

#include "algs4.h"
 
int main()
{
    return 0;
}      

待測試項目建立完成。接下來需要在目前解決方案中建立本機單元測試項目,如下圖:

完成項目建立之後,為了讓測試方法能夠通路待測試的代碼,需要在測試項目中添加待測試項目的引用。右擊測試項目,在屬性對話框裡找到VC++目錄->包含目錄

編輯包含目錄項,在彈出的對話框中添加待測試項目的檔案目錄:

完成後就可以在測試項目中引入待測試函數。簡單的測試代碼如下:

#include "stdafx.h"
#include "CppUnitTest.h"
#include "algs4.h"
 
using namespaceMicrosoft::VisualStudio::CppUnitTestFramework;
 
namespace UnitTestAlgs4
{               
    TEST_CLASS(UnitTest1)
    {
    public:
                 
        TEST_METHOD(TestMethod1)
        {
            //TODO: 在此輸入測試代碼
            Assert::AreEqual(20,add(10,10));
        }    
    };
}
      

運作測試時,可以在菜單欄找到測試->運作->所有測試,或者直接右擊,選擇運作測試

測試結果可以在測試資料總管中檢視:

不過以上的配置隻能測試頭檔案中的代碼,而大多情況下頭檔案中并不包括函數的實作,這時,測試項目僅包含待測試項目的檔案目錄是不夠的,還需要添加對.obj檔案的引用。

假設待測試項目的檔案及代碼如下:

int add(int a, int b);
int minus(int a, int b);      

algs4.cpp

#include "algs4.h"
 
int add(int a, int b)
{
    return a+b;
}
 
int minus(int a, int b)
{
    return a-b;
}      

main.cpp與上面的一緻。

打開測試項目的屬性對話框,修改連結器的正常->附加庫目錄和輸入->附加依賴項兩個屬性:

向附加庫目錄中添加待測試函數的.obj檔案目錄

如E:\VS2012\Algorithms4\Algorithms4\Debug

向附加依賴項中僅添加待測試函數的.obj檔案名,這裡是algs4.obj。

設定好後就能夠正常運作測試。

另外,在測試資料總管中右擊測試名,可以分析測試代碼的覆寫率。由于目前測試代碼沒有添加對minus的測試,是以它的已覆寫率是0。覆寫率測試還可以測試條件語句等分支語句的覆寫情況。