基于CppUnit的单元测试研究

时间:2022-01-30 03:48:57

基于CppUnit的单元测试研究

摘要:本文从分析单元测试中人工测试和自动测试的特点入手,分析了自动测试的优点,并选取了流行的开源软件CppUnit作为测试工具,介绍了使用方法,以及如何建立测试项目,最终给出基于CppUnit的单元测试规范。

关键词:单元测试;CppUnit;测试规范

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2017)02-0079-02

1 单元测试

在软件项目研发过程中,编码和单元测试属于同一阶段,是同样重要的组成部分。有效适度的单元测试可以用来理解和验证代码的功能特性,是保证软件质量的关键步骤。由于对单元测试的覆盖率要求很高,通常需要反复的进行,因此需要大量的测试用例,造成人力物力的担。 还有人认为单元测试就是编写测试代码对模块中的类或函数进行测试,需要很强的编程能力,从而对单元测试产生畏难情绪。但实际上,正确熟练的使用单元测试工具,开发人员之外的测试人员也可以很好的完成单元测试工作。

1.1 单元测试的分类

按照进行测试的方式分类,基本分为静态分析(static analysis)和动态分析(dynamic analysis)。静态分析就是对源代码进行走读检查,查找错误或收集一些相关数据,但不用对代码进行编译和执行。动态分析是观察软件执行时的过程,来提供跟踪,及时间分析,还包含测试覆盖度方面的信息[1]。

任何软件都可以进行人工测试,但进行人工测试可能存在一些问题,如:回归性、效率、覆盖率、数据的重用性问题等。测试工具的出现是为了提高测试的效率和质量,好的工具是测试工作的有力帮手。

使用测试工具的自动化测试可以是动态执行,也可以是静态检查的方式。自动化的静态检查主要根据代码的语法来识别错误,测试工具把这些错误特征归纳成为规则库,扫描代码时自动与规则库进行匹配比较。自动化的动态单元测试通过执行实现了测试用例的代码来进行测试,测试工具可以动态生成测试用例,然后转换到测试代码并执行。

1.2 选择合适的单元测试工具

自动化测试工具的优点:(1)节省时间,免去了重复的操作;(2)测试数据的可重用性;(3)测试的可控性。

如果选择利用测试工具来进行单元测试,就要了解如何选择,如何保证所选工具是最合适的。选择前要了解测试环境、待测系统类型、开发语言等。

现在市面上常见的C++类的测试软件,主要有CppUnit、parasoft公司的C++test、Google公司的GoogleTest以及国产凯乐公司的VisualUnit。主要分为开源的和非开源两类。开源测试工具具有以下优势:相对成本比较低;选择的空间比较大;源代码开放,可以根据实际进行修改、补充和完善。本文选取开源软件CppUnit进行单元测试工具。

2 单元测试工具CppUnit特点及安装

CppUnit是Micheal Feathers由JUnit移植过来的一个在GNU LGPL条约下的并在sourcefogre网站上开源的C++单元测试框架。

2.1 CppUnit的特点

CppUnit是在JUnit成功后,在C语言环境下开发的白盒测试工具软件。CppUnit以静态库的形式提供给用户使用,用户编写程序的时候直接链接此静态库就可以了。它提供了一个简单的单元测试框架,并且为常用的数据类型提供了丰富的断言语句支持。 CppUnit项目被定义为一个testing framework,其功能很强大,能针对一个项目,灵活的提供测试方案,同时具备对测试用例的管理功能。

2.2 CppUnit的安装

在官网下载解压后,子目录src下已经配置好VC的工程文件,其中example文件夹是CppUnit自带的测试例子,是针对CppUnit自身的单元测试集,可以通过这些例子来学习如何在工程中添加测试用例。

CppUnit将要进行单元测试管理为树状结构。最小的单元为TestMethod,多个相关的TestMethod组成一个TestCase,多个TestCase又组成TestSuite。测试包之间是互相嵌套的,最终形成树状结构,用户可根据需要选择任意的树节点来开始单元测试。

在使用CppUnit前,需要设置一下相关的开发环境。CppUnit提供了两套实施的框架库,一个为静态的lib,一个为动态的dll。在目录下,进入src文件夹,打开CppUnitLibraries.dsw。对这两个project分别进行编译后输出,输出的位置为lib文件夹。

最后还要给TestRunner.dll设置环境变量。另外一个要注意的project是TestRunner,它的输出是一个dll,它提供了一个测试环境,这个环境是基于GUI 方式的,这个project也需要编译,输出位置同样为lib文件夹。测试程序要想正确的调用,它必须位于你的测试程序的路径下。

安装及配置好环境后,就可以利用CppUnit建立测试项目了。

3 建立单元测试项目

在工作项目(Demo)中实现被测试的工作类,Sample

Sample.h--

class Sample

{ public:

Sample();

virtual ~Sample();

int Add(int i, int j) {

return i+j; } };

Sample.cpp―

#include "stdafx.h"

#include "Sample.h"

Sample::Sample()

上一篇:一种改进用户相似度的协同过滤推荐算法 下一篇:论啦啦操在中小学的推广与发展