VC++6.0 配置CppUTest測試環境

  最近看《軟件項目成功之道》,書中無數次說起到「單元測試」對於項目成敗的重要性,看到同事將CppUTest用於Linux動態庫測試,因而在VC++6.0環境下搭建一個基於CppUTest的單元測試環境,用於測試工做中編寫的C函數。下面就來介紹整個搭建過程,整個過程分爲四步:前期準備——須要的庫;環境配置——VC++6.0配置;實例演示——可復現的Demo;拓展——後續學習資料。git

  1、前期準備;github

  • CppUTest下載
    • 官網:http://cpputest.github.io/
    • 歷史版本:https://github.com/cpputest/cpputest/releases

  在個人項目中,採用的是老版本V3.3;框架

  2、環境配置;ide

  一、利用VC++6.0,新建一個用於測試的工程CppUTestLearning;函數

  二、選擇Project——>Settings,配置Code Generation,選擇「Debug Multithreaded DLL」;單元測試

  

  三、配置連接庫,其中CppUTest.lib是測試框架的核心,winmm.lib用於解決問題「error LNK2001: unresolved external symbol __imp__timeGetTime」;學習

  

  四、編譯時,須要忽略「libcmtd.lib」這個庫;Project——>Setting——>Link,選擇Category->Input,在Ignore libraries中填入libcmtd;測試

  

  五、設置CppUTest的公共頭文件存放路徑,選擇Tools——>Options——Directories,添加\CPPUTEST和\PLATFORMS\VISUALCPP兩個目錄;spa

  

  3、實例演示code

  一、編寫用於測試的開發程序MyProgram.h和MyProgram.c

MyProgram.h

#ifndef MY_PROGRAM_H
#define MY_PROGRAM_H
/*
*    Description:    整數加法函數
*    Function:        add
*    Parameter:        first    --[in]    第一個參數
*                    second    --[in]    第二參數
*
*    Return:            執行後的結果
*
*    Other:
*
*/
int add(int first,int second); #endif

MyProgram.c

#include "MyProgram.h"

/*
*    Description:    整數加法函數
*    Function:        add
*    Parameter:        first    --[in]    第一個參數
*                    second    --[in]    第二參數
*
*    Return:            執行後的結果
*
*    Other:
*
*/
int add(int first,int second)
{
    return first+second; }

  二、搭建測試環境,建立文件MainTest.cpp和FirstTestGroup.cpp文件,其中MainTest.cpp啓動「入口函數」的做用,而FirstTestGroup.cpp即一個單元測試組;

MainTest.cpp

#include "D:\\cpputest-3.3\\include\\CppUTest\\CommandLineTestRunner.h"
int main(int ac, const char** av)
{
    /* These checks are here to make sure assertions outside test runs don't crash */ CHECK(true); LONGS_EQUAL(1, 1); return CommandLineTestRunner::RunAllTests(ac, av); }

FirstTestGroup.cpp

#include "D:\\cpputest-3.3\\include\\CppUTest\\TestHarness.h"
#include "D:\\cpputest-3.3\\include\\CppUTest\\TestOutput.h"
extern "C"{ #include "MyProgram.h" } TEST_GROUP(MyProgram) { }; TEST(MyProgram, add) { LONGS_EQUAL(2,add(1,2)); }

  三、進行編譯,連接,而後執行,其結果如圖

  4、拓展

  上述實例,僅演示了整數類型數據比對LONGS_EQUAL,更多數據類型數據比對參見README_CppUTest.txt。

相關文章
相關標籤/搜索