lilycheng 发表于 2009-9-1 16:10:07

C++test中使用CppUnit测试用例

一、准备工作

1. CppUnit的概念

CppUnit是一套单元测试框架,是基于 LGPL 的开源项目,最初版本移植自 JUnit。CppUnit和JUnit 一样主要思想来源于极限编程。主要功能就是对单元测试进行管理。但是CppUnit只是提供了一个框架,并不能自动生成测试用例和自动执行测试。优秀的测试代码应该是尽可能地覆盖被测试代码的所有执行路径。并且实现代码坚固性、可靠性、健壮性的测试。往往测试用例随被测试代码复杂程度成指数增长,可想而知,如果测试人员手动编写测试用例,这个工作量是相当大的。

C++test工具能够根据源代码自动生成相应的基于CppUnit框架的测试用例。C++test自动生成的测试代码容易理解,并且方便测试人员在其基础上添加和修改测试用例。除此之外,还在CppUnit框架基础上提供一系列的宏,将繁琐的操作封装到宏中。C++test能够对执行单元测试结果进行分析,给出执行覆盖率信息,便于测试人员发现问题和提高代码的质量。

2. 如何把CppUnit测试用例加入到C++test中

对于旧有的CppUnit测试用例,C++test能够将其导入并测试。在C++test 中运行CppUnit测试用例允许您集中CppUnit 及C++test 的测试和报告。C++test 的报告和著作权计算能力可以帮助团队跟踪:测试用例从何时开始出错以及由谁来负责修正每种错误。团队可以每晚以命令行形式运行这些测试。为了即时反馈代码的改变是否破坏了现有的功能,每一个开发者都能导入由他们的修改而引起的回归失效。由于回归失效指向为失效负责的开发者,因此纠正这些失效的总过程比,所有开发者一起查看回归失效时的同一列表要便捷得多。并且,C++test 为CppUnit 测试用例提供测试覆盖率信息。

3. 导入待测工程

在ATM工程文件夹中提供了CppUnit文件夹,该文件夹包含了BankTestCase_1.cpp和BankTestCase_1.h两个文件,查看BankTestCase_1.cpp的源代码会发现,该文件还需要包含Account.hxx和Bank.hxx两个头文件,将这两个头文件复制到CppUnit文件夹内,至此,CppUnit文件夹中有四个文件。由于BankTestCase_1.cpp这个测试用例是针对Bank.cxx文件的,所以在导入工程的时候要特别注意,导入的是Bank工程而不是ATM工程。

将Bank.cxx文件在VC++(或其他编译器)编译,生成dsp文件,然后按照前面的方法将Bank.dsp导入到C++test中。

二、C++test中使用CppUnit测试用例

1. 测试配置

(1)将CppUnit文件夹(包含四个文件)复制到C++test工作区(默认路径:C:\Documents and

Settings\Administrator\Parasoft\cpptest\workspace)的Bank文件夹中,如图2-1所示。

(2)在工程浏览器中,右键单击Bank工程,选择Refresh(刷新),Bank文件夹下面多出一个CppUnit文件夹,如图2-2所示。

(3)在C++test下拉菜单下选择Test Configurations(测试配置),在左边的Builtin文件夹下打开Unit Testing,找到Run Unit Tests,右键选择Duplicate(副本),如图2-3所示。

(4)选中左边刚刚生成的Run Unit Tests副本,在右边的面板中,将其重命名为Run CppUnit Tests,在Execution(执行)面板中选择C++test中的General(常规)选项卡,将Test suite file search patterns(*):字段中的tests改为CppUnit,后面的*非常重要,然后单击Apply(应用),关掉窗口,如图2-4所示。

2. 运行CppUnit

(1)在工程浏览器中右键单击Bank,选择C++test->Test Using(使用测试)->User-Defined(用户定义)->Run CppUnit Tests(运行CppUnit测试),如图2-5所示。

(2)运行完毕后,会有一个任务提示,如图2-6所示。

如果需要被测试的ATM工程,请到www.tryarm.com的“资源共享”区下载
最新版本C++test免费下载:www.edukit.com.cn

lilycheng 发表于 2009-9-1 16:17:24

有始有终

至此,所有关于C++test的帖子我都发完了,本来还有用C++test测试嵌入式工程的实验,但是所需安装的软件太多,也较为复杂,我没有亲自做,就没能写成文档,以上这些都是我自己参考各种资料做的实验,希望对大家有所帮助,到现在我的账号还没被封,已经谢天谢地了,总算是有始有终了,实习马上就结束了,我的工作也将结束了,大家有兴趣还是可以去www.tryarm.com看看,有许多嵌入式学习资源。
页: [1]
查看完整版本: C++test中使用CppUnit测试用例