摘要
测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。XUnit是一个基于测试驱动开发的测试框架,它为我们在开发过程中使用测试驱动开发提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit的成员有很多,如JUnit,PythonUnit等。今天论文中讨论的CppUnit 即是XUnit家族中的一员,它是一个专门面向C++的测试框架。
一、引言
CppUnit是基于LGPL的开源项目,最初版本移植自JUnit,是个非常优秀开源测试框架。CppUnit和JUnit样主要思想来源于编程,主要功能是对单元测试进行管理并可进行自动化测试,CppUnit设计模式代码也相对好理解。实验使用的CppUnit的最新版本1.12.1,开发环境为WindowsXp的VC6.0。
本文不对CppUnit源码做详细的介绍,而只是对CppUnit在VC6.0环境下的应用作一些介绍。文章的安排如下:第二部分介绍CppUnit源代码的组成;第三部分介绍CppUnit的基本框架和概念;第四部分说明CppUnit的安装与配制,在VC中的使用,讨论怎样为产品代码添加测试代码(实际上应该反过来,为测试代码添加产品代码。在TDD中,先有测试代码后有产品代码),并通过CppUnit来进行测试;第五部分列出了实验的测试结果。
二、CppUnit源代码的组成
CppUnit是开源产品,从http://sourceforge.net/projects/cppunit 下载源码包,当前最高版本为1.12.1。下载后,将源码包解压缩到本地硬盘,例如解压到D: cppunit-1.12.1。下载解压后,你将看到如下文件夹,如图1:
图1 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