UML软件工程组织

 

 

C++——测试工具CppUnit的安装和配置
 
作者:eplanet 出处:csdn
 

The first port of JUnit to C++ was done by Michael Feathers. His versions can be found on the XProgramming software page. They are os-specific, so Jerome Lacoste provided a port to Unix/Solaris. His version can be found on the same page. The CppUnit project has combined and built on this work. ( CppUnit docs 1.12.0 / Index.htm )

CppUnit是一个开源项目,官方网站是http://sourceforge.net/projects/cppunit

目前针对C++项目的测试工具中,开源的CppUnit是最著名的测试工具之一。它的文档也十分详尽 ( 详尽到令我汗颜的地步,可惜只有英文的,我手里有1.12.0版本的源代码和文档,文档我翻译了一点点点点 )。在网上可以找到很多关于CppUnit的教学文章。晨光(Morning)写的《CppUnit源码解读》是我找到的最详细的中文资料,只可惜,它里面针对的版本旧了点 1.8.0版的,但也有很好的指导作用。

单元测试是一种灵活有效的测试方案。而使用CppUnit来做C++项目的单元测试是十分方便的。从名字也可以看出,XUnit系列(针对Java、Delphi等都有相关的开源项目),最初大概就是针对单元测试的。

CppUnit项目被定义为一个testing framework,其功能十分强大,能够针对一个项目,灵活的配置测试方案。同时也具备对测试用例的简单的管理支持。

1. 安装&配置

CppUnit在使用时需要对环境进行一些配置。

1. 首先需要下载源代码,在很多地方都可以找到,不过推荐在其官方站点下载。

2. 之后解压缩,编译源代码。

3. 在\lib目录下可以找到所有的编译文件所有编译后生成的库均可在'lib'目录中找到。多数库可以在src/CppUnitLibraries.dsw工作区中创建。

lib\:

cppunit.lib : CppUnit静态库Multithreaded DLL
cppunitd.lib : CppUnit静态库Debug Multithreaded DLL
cppunit_dll.dll : CppUnit动态库(DLL)Multithreaded DLL
cppunit_dll.lib : CppUnit动态导入库Multithreaded DLL
cppunitd_dll.dll : CppUnit动态库(DLL)Debug Multithreaded DLL
cppunitd_dll.lib : CppUnit动态导入库Debug Multithreaded DLL
qttestrunner.dll : QT TestRunner动态库(DLL)Multithreaded DLL
qttestrunner.lib : QT TestRunner导入库Multithreaded DLL
testrunner.dll : MFC TestRunner动态库(DLL)Multithreaded DLL
testrunner.lib : MFC TestRunner导入库Multithreaded DLL
testrunnerd.dll : MFC TestRunner动态库(DLL)Debug Multithreaded DLL
testrunnerd.lib : MFC TestRunner导入库Debug Multithreaded DLL
testrunneru.dll : MFC Unicode TestRunner动态库(DLL)Multithreaded DLL
testrunneru.lib : MFC Unicode TestRunner导入库Multithreaded DLL
testrunnerud.dll : MFC Unicode TestRunner动态库(DLL)Debug Multithreaded DLL
testrunnerud.lib : MFC Unicode TestRunner导入库Debug Multithreaded DLL
TestRunnerDSPlugIn.dll : 注册到你的VC++中的附加插件。

* 注意:当你使用CppUnit DLL(cppunit*_dll.dll)时,你必须连接相关的导入库,并在project中定义预处理标识CPPUNIT_DLL。

4. 在VC6的Tools/Options中设置include和lib的包含路径。

这个时候,我们就可以使用CppUnit了,但是想使用它的话,还需要在新建立的工成里做一些设置。

  • 打开RTTI
  • 工程设置要设置成多线程模式

也可以使用CppUnit工程向导 www.sourcextreme.com/projects/cppunit/CppUnitAppWizard.zip

下载后,将解压缩得到的awx文件拷贝到VC的Template目录下。一般位置为
Microsoft Visual Studio\Common\MSDev98\Template。

这时重起VC就可在NEW Project下有一个 CPPUnit TestApp Wizard 向导。选择输入测试工程名即可创建一个测试工程,并且缺省的测试fixture 为SampleTest,将所要测试文件添加到测试工程内,即可创建TestSuit,Testcase,写测试方法。而且工程设置也不用手动进行了。

当然,相关的DLL文件,还需要手动放到相关的位置去。

2. 示例

在CppUnit的源代码中,包含了几个测试工程的例子。

  • CppUnitTestMain:一个实际的测试包(test suite)用来测试CppUnit。使用了TextTestRunner(文本方式的单元测试环境),利用CompilterOutputter进行post-build testing(即在编译结束之后紧跟着进行测试)。在配置中设定连接了cppunit的静态库和动态库。
  • CppUnitTestApp:包含了与CppUnitTestMain相同的测试包,但使用了MFC TestRunner(GUI方式的单元测试环境)
  • Hierarchy:一个演示如何子类化测试的例子(你也许更愿意使用HelperMacros.h以及宏CPPUNIT_TEST_SUB_SUITE,这种方式更为简洁清晰。本示例已经很久没有更新了)。
  • HostApp :一个用MFC TestRunner演示各种失败测试的例子。也演示了MFC Unicode TestRunner。
  • TestPlugIn:一个演示如何为TestPlugInRunner编写TestPlugIn的例子(实验性的)。

另外,在CppUnit的Docs中也可以找到很多小例子,Related Pages / CppUnit Cookbook里就有一份不错的入门指导。

经过刚才的描述,应该对CppUnit有了一个大概的了解了。CppUnit通过测试用例来测试项目,并且在必要的时候进行提示,告诉我们哪些用例没有被通过。但是测试用例必须要我们亲自来编辑,这个是没有取巧的办法的。

对于CppUnit,简短的说明是无法说清楚的。如果有兴趣,不妨亲自试试,不光是测试,其良好的设计和代码风格以及详细的文档也是值得学习的。

 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号