本文档在对CPPUINT简单介绍的基础上,主要讲解针对Android的C/C++代码,如何利用CPPUINT进行单元测试的方法和步骤。
1、 CPPUINT简介
CPPUNIT是基于JUnit衍生而来的,专门面向C++代码的测试框架。
其主要功能有:
n 带有附加数据的XML输出
n 集成到某个IDE中,以编译文本方式进行结果输出
n 更便于测试套件声明的辅助宏定义
n 支持分等级的测试环境
n 特有的测试注册方式,降低了程序重新编译的需要
n 能够加快编译、测试周期的测试插件
n 封装了测试执行过程的保护器
2、 测试方法
<<可执行程序>> 测试程序 |
<<库>> 待测试软件模块 |
<<库>> CPPUNIT测试框架 |
图1 基本测试方法调用关系图
基于CPPUNIT测试框架的测试程序,其基本的测试方法如图1所示:CPPUNIT测试框架以一个动态库的形式存在,而需要进行单元测试的软件模块(称为待测试模块)则是以动态库或静态库的形式存在。为了进行单元测试,需要专门开发一个或多个测试程序,测试程序包含测试用例的代码,并同时链接待测试模块和CPPUNIT测试框架。通过执行测试程序完成单元测试,基本步骤如下:
(1) 编译CPPUINT测试框架,生成动态库;
(2) 准备好待测试软件模块;
(3) 编写测试程序并编译;
(4) 执行测试程序。
3、 测试步骤
3.1编译CPPUNIT测试框架生成动态库
CPPUNIT测试框架是一个开源项目,利用Android的编译系统将CPPUNIT编译为Android平台下的动态链接库,以方便开发人员在后期开发测试程序时,提供调用接口。具体的编译步骤如下:
(1) 将CPPUNIT的源代码复制到Android的源码树中的某个位置;
(2) 在CPPUNIT的源代码目录的根目录下编写相应的Android.mk工程文件,其编写方法可以参考附录A中的内容;
(3) 在Android源代码的根目录下执行如下指令,进行编译:
# make <module-name> ONE_SHOT_MAKEFILE=<path to Android.mk of cppunit> TARGET_PRODUCT=<product-name>
其中:
l module-name:所需要编译的项目模块名称,这个名称是在项目的Android.mk文件中定义的
l path to Android of cppunit:CPPUNIT项目的Android.mk文件的路径,是相对于Android源码根目录的相对路径
l product-name:目标产品名称
示例如下:
make cppunit ONE_SHOT_MODULE=./cppunit/Android.mk PRODUCT=eeepc
通过上述步骤编译过后,就可以在Android源代码目录out/target/product/eeepc下找到编译好的动态库 libcppunit.so了。
3.2准备待测试模块
根据软件设计规范,实现待测模块的代码开发,编译生成动态库或静态库,供测试程序调用。
3.3编写测试程序