CPPUNIT

  • 格式:doc
  • 大小:416.50 KB
  • 文档页数:8

CPPUNIT使用说明
平台:winxp、VC6/VC2005/VC2008
编写日期2009-3-9
1源码下载:/projects/cppunit
2编译CPPUNIT:参考/oowgsoo/archive/2009/02/03/1383470.html 既然是cppunit源代剖析,当然首先要得到cppunit的源代码。

因为cppunit是开源的,得到源代码是很容易的事情,可以从cppunit的官方网站()自由下载。

截止到2009年1月为止,cppunit 的最新版本是1.12.0,本书就以这个版本为我们的剖析对象。

下载了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界面的。

3配置编译器环境(以VC2005为例)
打开vc2005工具菜单,选择“选项”标签,添加cppunit头文件目录以及库文件目录。

配置好后,就可以使用cppunit的头文件以及库。

源代码中必须声明使用库
#pragma comment(lib, "cppunit.lib")
#pragma comment(lib, "testrunner.lib")
4编写测试程序
4.1新建一个MFC对话框程序CSS_CPPUNIT。

4.2修改CSS_CPPUNIT.cpp
a)添加如上图所示两个cppunit头文件
b)按如下方式修改CCSS_CPPUNITApp::InitInstance().
1.注释掉65-77行
2.添加78-82行
4.3编译程序,此时应该可以运行显示CPPUNIT主界面。

注意:假如编译为release版本,则选择编译选项MD;如果为debug版本,则选择MDd
4.4添加测试代码
a)添加一个c++类example,其基类是public CPPUNIT_NS::TestFixture
b)修改example.h
如下:
c)修改example.c
如下;
d)此时,编译运行,可以发现出现了测试包example
e)添加测试包初始化、结束函数setUp,tearDown(注意大小写)。

以及添加测试用例
testcase1,testcase2
说明,每一个用例,都会调用setUp和tearDown
故而上述运行结果应该是:按出现顺序。

f)添加其他用例
CPPUNIT_ASSERT是一个宏,判断后面的参数是否正确,CPPUNIT还有很多宏,如
CPPUNIT_ASSERT(condition) // 确信condition为真
CPPUNIT_ASSERT_MESSAGE(message, condition) // 当condition为假时失败, 并打印message
CPPUNIT_FAIL(message) // 当前测试失败, 并打印message
CPPUNIT_ASSERT_EQUAL(expected, actual) // 确信两者相等
CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual) // 失败的同时打印message
CPPUNIT_ASSERT_DOUBLES_EQUAL(expected, actual, delta) // 当expected和actual 之间差大于delta时失败
g)单元测试结果
假如测试中所有断言都通过,则结果为绿色。

假如由一个断言失败,则显示红色,下面显示出错位置,且双击可以找到源代码位置。

5添加其他测试代码
可以参考章节4.4,添加自己要写的代码。