使用CPPUnit执行C/C++单元测试

使用CPPUnit执行C/C++单元测试

1、下载CPPUnit

官方地址如下:CppUnit - C++ port of JUnit download | SourceForge.net

https://sourceforge.net/projects/cppunit/

进入官方地址后,首页如下:

在这里插入图片描述

点击 【Download】下载即可。

本次项目用了【cppunit-1.13.2.rar】包。

在这里插入图片描述

2、CPPUnit使用

①、 CPPUnit结构

目录结构如下:

在这里插入图片描述

进入到cppunit目录后,可以看到如下目录结构:

  • config: 配置文件目录;
  • doc: 相关文档目录,需要通过doxygen工具生成,也可以从sourceforge等网站下载打包好的文档;
  • contrib: contribution,大家贡献的外围代码;
  • examples: 示例代码目录;
  • include: 头文件目录;
  • lib: 存放编译好的库文件;
  • src: 源文件目录,存放源文件及编译库的工程等。

②、 CPPUnit编译

进入到cppunit/src目录下,用 vs2013/vs2015/vs2017/vs2019等工具打开CppUnitLibraries工程,配置编译参数后开始编译工程,编译成功后,生成的库文件将被拷贝到lib目录下。 我们也可以根据需要选择所需的项目进行编译,其中生成目录Debug为静态库(cppunit),DebugDll为动态库(cppunit_dll)。生成的库文件说明:

  • cppunit.lib: 静态库release版;

  • cppunitd.lib: 静态库debug版;

  • cppunit_dll.dll/cppunit_dll.lib: 动态库release版;

  • cppunitd_dll.dll/cppunitd_dll.lib: 动态库debug版;

    如果生成win32x64版本的库,只要设置vs工具的编译类型,然后重新编译即可。使用过程中,我们把生成的CPPUnit库文件拷贝到对应的Lib目录中即可

vs2013/vs2015/vs2017/vs2019 等打开 cppuint 工程文件。

在这里插入图片描述

配置管理器,选择【x64】平台。

在这里插入图片描述

编译过程中,如果出现 "error MSB3073:命令" 错误,则通过 项目的属性->配置属性->生成事件->后期生成事件->命令行 ,设置正确的路径即可。

错误示例

在这里插入图片描述

在这里插入图片描述

修改配置

删除对应命令行,手动拷贝就可以。

在这里插入图片描述

将编译好的CPPUnit打包。

在这里插入图片描述

③、 CPPUnit概念

在使用CPPUnit之前,先简单介绍下CPPUnit中的主要类,如果熟悉CPPUnit则跳过本部分内容。

CPPUnit核心内容主要包括如下六个方面

  • 测试对象(Test,TestFixture,…): 用于开发测试用例,以及对测试用例进行组织管理;
  • 测试结果(TestResult): 处理测试用例执行结果,TestResult与下面的TestListener采用的是观察者模式(Observer Pattern);
  • 测试结果监听者(TestListener): TestListener作为TestResult的观察者,担任实际的结果处理角色;
  • 结果输出(Outputter): 将结果进行输出,可以制定不同的输出格式;
  • 对象工厂(TestFactory): 用于创建测试对象,对测试用例进行自动化管理;
  • 测试执行体(TestRunner): 用于运行一个测试。

3、 执行单元测试

①、 创建项目

创建 Visual Studio项目,并设置CPPUnit 包含、引用路径。

在这里插入图片描述

设置包含路径。

在这里插入图片描述

设置引用库目录。

在这里插入图片描述

②、 编写用例

这里简单列举一个cppunit单元测试。

// TestCaseDemo.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include "cppunit/TestCase.h"
#include "cppunit/TestResult.h"
#include "cppunit/TestResultCollector.h"
#include "cppunit/TextOutputter.h"


/*---------------------------------------------------------------------
 *                       定义测试用例;  
 *--------------------------------------------------------------------*/
class SimpleTestCase :public CppUnit::TestCase
{
public:
	void runTest();  //重载基类测试方法;

};


void SimpleTestCase::runTest()
{
	int iValue = 1;
	CPPUNIT_ASSERT_EQUAL(0, iValue);          //验证参数值是否等于零;
}


/*---------------------------------------------------------------------
 *                      入口函数;
 *--------------------------------------------------------------------*/
int main(int argc, char* argv[])
{
	CppUnit::TestResult result;
	CppUnit::TestResultCollector resultcollecter;
	result.addListener(&resultcollecter);      //设置结果收集器;

	SimpleTestCase test;
	test.run(&result);

	CppUnit::TextOutputter output(&resultcollecter, std::cout);
	output.write();      //标准输出打印结果;


	system("pause");
	return 0;
}

③、 运行效果

在这里插入图片描述

在这里插入图片描述

4、 CPPUnit入门指导

可以阅读 《CppUnitCookbook中文版.pdf》 手册,可以快速上手CppUnit使用。

在这里插入图片描述

  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值