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文件的引用。

假設待測試項目的文件及代碼如下:

algs4.h

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。覆蓋率測試還可以測試條件語句等分支語句的覆蓋情況。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章