如何使用CppUnit进行单元测试

发表于:2008-8-16 14:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:hmf3000    来源:VC知识库

一、前言

  测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成部分。XUnit,一个基于测试驱动 开发的测试框架,它为我们在开发过程中使用测试驱动开发提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit的成员有很多,如 JUnit,PythonUnit等。今天给大家介绍的CppUnit即是XUnit家族中的一员,它是一个专门面向C++的测试框架。

  本文不对CppUnit源码做详细的介绍,而只是对CppUnit的应用作一些介绍。你将看到:

  1、CppUnit源代码的各个组成部分;

  2、怎样设置你的开发环境以能够使用CppUnit;

  3、怎样为你的产品代码添加测试代码(实际上应该反过来,为测试代码添加产品代码。在TDD中,先有测试代码后有产品代码),并通过CppUnit来进行测试;

  本文叙述背景为:CppUnit1.12.0, Visual C++ 6.0, WindowsXP。文中叙述有误之处,敬请批评指正。

一. CppUnit的安装

  从http://sourceforge.net/projects/cppunit CppUnit的源码包. CppUnit是开源产品 , 当前最高版本为1.12.0. (在上面的链接所指向的页面上选择 Development Snapshot ).

  下载后,将源码包解压缩到本地硬盘,例如解压到E:\ cppunit-1.12.0。笔者把文件夹名称中的版本号去掉,即源码包解压缩到E:\cppunit。下载解压后,你将看到如下文件夹:

  主要的文件夹有:

  • doc: CppUnit的说明文档。另外,代码的根目录,还有三个说明文档,分别是INSTALL,INSTALL-unix,INSTALL-WIN32.txt;
  • examples: CpppUnit提供的例子,也是对CppUnit自身的测试,通过它可以学习如何使用CppUnit测试框架进行开发;
  • include: CppUnit头文件;
  • src: CppUnit源代码目录;
  • config:配置文件;
  • contrib:contribution,其他人贡献的外围代码;
  • lib:存放编译好的库;
  • src:源文件,以及编译库的project等;

  接下来进行编译工作。 在src/目录下, 将CppUnitLibraries.dsw工程文件用vc 打开。执行build/batch build,编译成功的话,生成的库文件将被拷贝到lib目录下。中途或者会有些project编译失败,一般不用管它,我们重点看的是cppunit和TestRunner 这两个project的debug和release版本。

  编译通过以后, 在lib/目录下,会生成若干lib,和dll文件, 都以cppunit开头. cppunitd表示debug版, cppunit表示release版。

  CppUnit为我们提供了两套框架库,一个为静态的lib,一个为动态的dll。cppunit project:静态lib;cppunit_dll project:动态dll和lib。在开发中我们可以根据实际情况作出选择。

  你也可以根据需要选择所需的项目进行编译,其中项目cppunit为静态库,cppunit_dll为动态库,生成的库文件为:

  • cppunit.lib:静态库release版;
  • cppunitd.lib:静态库debug版;
  • cppunit_dll.lib:动态库release版;
  • cppunitd_dll.lib:动态库debug版;

  另外一个需要关注的project是TestRunner,它输出一个dll,提供了一个基于GUI 方式的测试环境,在CppUnit下, 可以选择控制台方式和GUI方式两种表现方案。两种方案分别如下图所示:

  我们选择GUI方式,所以我们也需要编译这个project,输出位置亦为lib文件夹。

  要使用CppUnit,还得设置好头文件和库文件路径,以VC6为例,选择Tools/Options/Directories,在Include files和Library files中分别添加%CppUnitPath%\include和%CppUnitPath%\lib,其中%CppUnitPath%表示 CppUnit所在路径。本文这里分别填的是E:\CPPUNIT\INCLUDE和E:\CPPUNIT\LIB。

51/512345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号