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