本文只讨论在VC2008环境下编译CPPUNIT单元测试工具的过程。不涉及CPPUNIT环境配置。
前段时间看了一些CPPUNIT相关的资料,参考一位前辈的资料实现了VC2008环境下的CPPUNIT单元测试环境配置。早就想把配置过程中遇到的一些问题和解决方案总结一下。
从接触到的资料来看,大多只是就一个问题进行了解释和处理,没有完整的说明配置过程。本文是在总结多篇日志的基础上,加上自己的在配置CPPUNIT测试环境中遇到的新问题集合而成的较系统和全面的解决方案。
图1 VC2008环境下配置CPPUNIT单元测试环境的关键步骤
1. 下载CPPUNIT源代码。
下载地址为:http://sourceforge.net/projects/cppunit/files/
注意:不要直接点击Download按钮,那样下载的结果可能是一个CVS管理下的源代码包,解压后每个文件都会多出一个单字母的扩展名。我没有用过CVS不知道该怎么处理。请下载如下图2所示的cppunit-1.12.1.tar.gz文件。
下载完毕后,解压源代码包,用VC2008打开src目录下的HppUnitLibrarie.dsw文件。VC2008升级向导会提示升级,按照提示步骤操作即可。
2.生成解决方案
报错。因为CPPUNIT使用的一个VC相关的东西(到底是个啥东西,我也不知道)的版本号不对。
3.改一个版本号
修改src/TestRunner/UserInterface/DynamicWindow/MsDevCallerListCtrl.cpp文件第67行,改成"#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("9.0") lcid("0") raw_interfaces_only named_guids"。 VC2008对应的版本号是9.0。
4.生成解决方案
若CPPUNIT源代码放在有空格的路径下会报错。
5.将整个CPPUNIT源代码移到不含空格的路径下。
这里会什么会因为空格而错,会另外写一篇文章来单独说明。
6.生成解决方案
报错。DSPlugin只适用于VC6.0,在VC2008下编译报不适用的错。
7.从解决方案中移除DSPlugin项目
该项目是一个适用于VC6的插件,可以在单元测试出错时自动定位出错的代码行。在VC2008下不可用。
8.生成解决方案
成功!
9.批生成解决方案
成功!
10.升级examples.dsw
用VC2008打开examples目录下的的examples.dsw文件,按照向导提示,进行升级。
11.编译CppUnitTestApp项目
成功!
12.设置CppUnitTestApp项目为启动项目,编译,链接,运行
成功!
本文只说明了VC2008环境下编译CPPUNIT的过程,至于如何在VC2008中配置CPPUNIT并定义一个自己的测试框架,会在另一篇文章中说明。