参考文章:http://blog.csdn.net/ainiyidiandian/article/details/5788240#(CppUnit使用说明)
http://www.cnblogs.com/blueswitkey/archive/2013/01/26/2877827.html(VS2008下CppUnit环境配置)
http://wenku.baidu.com/view/49657e0102020740be1e9b42.html(含有MFC界面TestRunner的实例)
一、使用CppUnit前需要做的准备工作(编译、环境配置)
下载了cppunit的源代码压缩包并解压后,各目录结构所含文件为:
* config:该目录下包含了一些配置相关的文件,在Windows平台下意义不大
* contrib:该目录下包含3个子目录bc5,msvc,xml-xsl,就是一些分发后或许有用的小工具,在msvc目录下是一个VBA脚本文件
* doc:该目录下是cppunit的一些文档,不过实在是没什么可看的
* examples:该目录下是cppunit的示例,这可是一个好东西
* include:该目录下是cppunit源代码的头文件
* lib:该目录下是cppunit编译后输出的lib文件
* src:该目录下是cppunit源代码的cpp文件
Windows环境下编译cppunit VC6 VC2005 VC2008都类似:
直接用VC6打开examples目录下的examples.dsw,得到如图所示的工程:
- ClockerPlugIn:这个工程是一个VC的插件,我们在这里先不理会这些插件工程
- cppunit:这个工程是cppunit的静态链接库
- cppunit_dll:这个工程是cppunit的动态链接库
- CppUnitTestApp:这个工程是测试cppunit本身的功能的,有MFC界面
- CppUnitTestMain:这个工程是测试cppunit本身的功能的,控制台界面
- CppUnitTestPlugIn:
- DllPlugInTester:
- DllPlugInTesterTest:
- DumperPlugIn:
- hierarchy:这个工程是一个演示工程,演示测试包的继承
- HostApp:这个工程是一个演示工程,演示带MFC界面的cppunit的使用
- money:这个工程是一个演示工程,
- simple:这个工程是一个演示工程,演示cppunit最简单的使用方式,控制台界面
- simple_plugin:
- TestPlugInRunner:
- TestRunner:这个工程是一个动态链接库,功能是让cppunit支持MFC界面
在编译代码之前先在VC6中设置一下include路径和src路径。
主要编译cppunit/cppunit_dll,分别是静态库和动态库,选择其一即可;编译TestRunner,这个是支持MFC界面的。
易出现错误:
链接过程中会报错:
error C3505: cannot load type library '{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}'
出错的文件是:src/msvc6/testrunner/MsDevCallerListCtrl.cpp。这是由于使用VC 8.0编译的缘故,需要修改一下它的源码,打开该文件,找到出错行(#67),将其替换为:
1 #if _MSC_VER >= 1400 // VC++ 8 or more 2 3 //The following #import imports EnvDTE based on its LIBID. 4 5 #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids 6 7 //The following #import imports EnvDTE80 based on its LIBID. 8 9 #import "libid:1A31287A-4D7D-413e-8E32-3B374931BD89" version("8.0") lcid("0") raw_interfaces_only named_guids 10 11 #else // vc7 12 13 #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids 14 15 #endif
添加环境变量:
多个变量之间用分号“;”隔开。
编译完成以后, 在cppunit根目录/lib/目录下,会生成若干lib,和dll文件, 都以cppunit开头. cppunitd表示debug版, cppunit表示release版。
CppUnit为我们提供了两套框架库,一个为静态的lib,一个为动态的dll。其中项目cppunit为静态库,cppunit_dll为动态库,生成的库文件为:
cppunit.lib:静态库release版;
cppunitd.lib:静态库debug版;
cppunit_dll.lib:动态库release版;
cppunitd_dll.lib:动态库debug版;
至此,我们就有了执行CPPUINT所需要的文件(.lib文件),剩下的事情,就是将这些文件运用到被测试的工程中去。
配置工作:
环境配置如下操作:
1.在VS2008中点击 工具——选项——弹出的框中点击“项目和解决方案”边的+号——VC++目录——右侧“显示以下内容的目录”中选择“可执行文件”,添加 本机cppunit根目录lib
2.在“包含文件”中,添加 本机cppunit根目录include
3.同样,在库文件中,添加 本机cppunit根目录lib
三、新建测试项目
在VS2008中新建一个工程作为测试项目,在测试工程中也有一些需要配置的地方:右击测试项目,点击“属性”
在弹出的窗口中,依次点击“链接器”——输入——在最上方“配置”中,选择Debug,在右侧“附加依赖项”中加入: cppunit根目录libcppunitd.lib
然后,选择Release,在右侧“附加依赖项”中加入: cppunit根目录libcppunit.lib
二、测试实例