1.2 在VC 6.0/window下安装(参考6)
a) 从官方网站上下载CppUnit的tar包并解压到本地磁盘,比如D:CppUnit1.12.1
b) 编译、安装CppUnit库。在VC中打开D:CppUnit1.12.1srcCppUnitLibraries.dsw,选择“Build | BatchBuild...”,选中所有的项目,点击build按钮。在D:CppUnit1.12.1lib下生成所需要的所有库文件。
c)在Visual C++中进行设置。告诉VC在哪里能找到CppUnit中的程序文件和库文件:打开“Tools | Options...”,切换到'Directories'标签页,选择'include files',添加D:CppUnit1.12.1include;切换到'libraries files'标签页,添加CPPUNITHOME/lib/;切换到'source files'标签页,添加D:CppUnit1.12.1srccppunit,保存。
d) 在测试代码中进行设置。在VC中打开你写的测试程序,启动Project Settings对话框,切换到'C++'标签页,选择'Code generation'项,对于release版,选择'Multithreaded DLL',对于Debug版,选择'Debug Multithreaded DLL'。同样是在这个标签页,选择'C++ langage'项,选择All Configurations,选择'enable Run-Time Type Information (RTTI)'。切换到'Link'标签页,在'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).添加系统路径。为使测试程序在运行时能找到CppUnit提供的dll,我们在环境变量中指出CppUnit提供的dll的路径:在我的电脑中,打开环境变量,编辑系统变量中的path变量,向其中添加CPPUNITHOMElib,从新启动计算机,使设置生效。
1.3. 在Eclipse下安装CppUnit
CppUnit配置到Eclipse平台实际是通过项目中加入头文件实现的,将CppUnit 的头文件的目录添加到编译所用环境变量中.
1.4.在MinGW/Eclipse/window 下安装
这个组合是为了在window的环境下使用gcc来编译CppUnit的测试代码。这里先简单介绍一下MinGW.
1.4.1MinGW简介
一个自由使用和自由发布的Windows特定头文件和使用GNU工具集接口库的集合,支持生成的windows程序而不需要借助第三方运行时库。MinGW(MiniamalistGNU for Windows)是一些头文件和接口库的集合,该集合支持人们在没有第三方动态链接库的情况下使用GCC来生成Win32程序。在基本层上,MinGW是一组包含文件和接口库,其功能是允许控制台模式的程序使用MS标准C运行时库(MSVCTR.dll)。通过基本运行时,gcc编写的符合ANSI的控制台模式的程序可以使用C运行库扩展,MinGW的另一个组成部分W32API—是一组可以使用win32API的包含文件的和接口库。
提到MinGW,必然想到Cygwin:Cygnus Solutions开发的自由软件,嵌入式软件的开发的流行。Cygwin改进了gcc,gdb,gas,使其能够生成并解释win32的目标文件,然后再把这些工具移植到window中,共享库(基于win32API编写了一个Unix系统库的模拟层),Unix主机交叉编译,逐步移植其他的工具。
在这个环境下安装和在Linux安装什么区别。
终于,所有的安装事项都结束了,在进入理论前使用一个例子实践一下。
2 CppUnit实例--来自参考[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;
}