1.2 在VC 6.0/window下安裝(參考6)
a) 從官方網(wǎng)站上下載CppUnit的tar包并解壓到本地磁盤,比如D:CppUnit1.12.1
b) 編譯、安裝CppUnit庫(kù)。在VC中打開D:CppUnit1.12.1srcCppUnitLibraries.dsw,選擇“Build | BatchBuild...”,選中所有的項(xiàng)目,點(diǎn)擊build按鈕。在D:CppUnit1.12.1lib下生成所需要的所有庫(kù)文件。
c)在Visual C++中進(jìn)行設(shè)置。告訴VC在哪里能找到CppUnit中的程序文件和庫(kù)文件:打開“Tools | Options...”,切換到'Directories'標(biāo)簽頁(yè),選擇'include files',添加D:CppUnit1.12.1include;切換到'libraries files'標(biāo)簽頁(yè),添加CPPUNITHOME/lib/;切換到'source files'標(biāo)簽頁(yè),添加D:CppUnit1.12.1srccppunit,保存。
d) 在測(cè)試代碼中進(jìn)行設(shè)置。在VC中打開你寫的測(cè)試程序,啟動(dòng)Project Settings對(duì)話框,切換到'C++'標(biāo)簽頁(yè),選擇'Code generation'項(xiàng),對(duì)于release版,選擇'Multithreaded DLL',對(duì)于Debug版,選擇'Debug Multithreaded DLL'。同樣是在這個(gè)標(biāo)簽頁(yè),選擇'C++ langage'項(xiàng),選擇All Configurations,選擇'enable Run-Time Type Information (RTTI)'。切換到'Link'標(biāo)簽頁(yè),在'Object/library modules'中添入需要的lib文件cppunitX.lib (debug模式為cppunitd.lib, release 模式為cppunit.lib )和testrunnerX.lib(debug模式為testrunnerd.lib, release 模式testrunner.lib,debug Unicode模式為testrunnerud.lib, release Unicode模式為testrunneru.lib)
e).添加系統(tǒng)路徑。為使測(cè)試程序在運(yùn)行時(shí)能找到CppUnit提供的dll,我們?cè)诃h(huán)境變量中指出CppUnit提供的dll的路徑:在我的電腦中,打開環(huán)境變量,編輯系統(tǒng)變量中的path變量,向其中添加CPPUNITHOMElib,從新啟動(dòng)計(jì)算機(jī),使設(shè)置生效。
1.3. 在Eclipse下安裝CppUnit
CppUnit配置到Eclipse平臺(tái)實(shí)際是通過項(xiàng)目中加入頭文件實(shí)現(xiàn)的,將CppUnit 的頭文件的目錄添加到編譯所用環(huán)境變量中.
1.4.在MinGW/Eclipse/window 下安裝
這個(gè)組合是為了在window的環(huán)境下使用gcc來編譯CppUnit的測(cè)試代碼。這里先簡(jiǎn)單介紹一下MinGW.
1.4.1MinGW簡(jiǎn)介
一個(gè)自由使用和自由發(fā)布的Windows特定頭文件和使用GNU工具集接口庫(kù)的集合,支持生成的windows程序而不需要借助第三方運(yùn)行時(shí)庫(kù)。MinGW(MiniamalistGNU for Windows)是一些頭文件和接口庫(kù)的集合,該集合支持人們?cè)跊]有第三方動(dòng)態(tài)鏈接庫(kù)的情況下使用GCC來生成Win32程序。在基本層上,MinGW是一組包含文件和接口庫(kù),其功能是允許控制臺(tái)模式的程序使用MS標(biāo)準(zhǔn)C運(yùn)行時(shí)庫(kù)(MSVCTR.dll)。通過基本運(yùn)行時(shí),gcc編寫的符合ANSI的控制臺(tái)模式的程序可以使用C運(yùn)行庫(kù)擴(kuò)展,MinGW的另一個(gè)組成部分W32API—是一組可以使用win32API的包含文件的和接口庫(kù)。
提到MinGW,必然想到Cygwin:Cygnus Solutions開發(fā)的自由軟件,嵌入式軟件的開發(fā)的流行。Cygwin改進(jìn)了gcc,gdb,gas,使其能夠生成并解釋win32的目標(biāo)文件,然后再把這些工具移植到window中,共享庫(kù)(基于win32API編寫了一個(gè)Unix系統(tǒng)庫(kù)的模擬層),Unix主機(jī)交叉編譯,逐步移植其他的工具。
在這個(gè)環(huán)境下安裝和在Linux安裝什么區(qū)別。
終于,所有的安裝事項(xiàng)都結(jié)束了,在進(jìn)入理論前使用一個(gè)例子實(shí)踐一下。
2 CppUnit實(shí)例--來自參考[3]
/*Program:testcppunit.cpp -- a simple hellow example which use the cppunit tool*/
#include <iostream>
#include <cppunit/TestRunner.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
class Test : public CPPUNIT_NS::TestCase
{
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testHelloWorld);
CPPUNIT_TEST_SUITE_END();
public:
void setUp(void) {}
void tearDown(void) {}
protected:
void testHelloWorld(void) { std::cout << "Hello, world!" << std::endl; }
};
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
int main( int argc, char **argv )
{
// Create the event manager and test controller
CPPUNIT_NS::TestResult controller;
// Add a listener that colllects test result
CPPUNIT_NS::TestResultCollector result;
controller.addListener( &result );
// Add a listener that print dots as test run.
CPPUNIT_NS::BriefTestProgressListener progress;
controller.addListener( &progress );
// Add the top suite to the test runner
CPPUNIT_NS::TestRunner runner;
runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
runner.run( controller );
return result.wasSuccessful() ? 0 : 1;
}