Boost_Test 测试夹具

4 篇文章 0 订阅
/************************************************************************/
/*
测试夹具: 测试安装和测试清理好比c++中的构造函数和析构函数,“测试夹具”实现了自动的测试安装和测试清理。基本形式为:
struct test_fixture_name	// 测试夹具类, 通常是struct, 将被UTF继承
{
test_fixture_name(){}		// 测试安装工作
~test_fixture_name(){}		// 测试清理工作
};
测试夹具类需要使用以下两个宏指定测试用例和测试套件
#define BOOST_FIXTURE_TEST_SUITE(suite_name, F)
#define BOOST_FIXTURE_TEST_CASE(test_name, F)
*/
/************************************************************************/

#include "stdafx.h"
#include <iostream>
//#include <boost/core/lightweight_test.hpp>
using namespace std;
#define BOOST_TEST_MODULE test_module	// 定义boost测试模块,宏后面的 test_xxxx不重复就行(这行语句必须存在,可用于标记不同模块的测试)
#include <boost/test/unit_test.hpp>		// 引用boost单元测试头文件
#include <boost/smart_ptr.hpp>
#include <boost/assign.hpp>
using namespace boost::assign;
//using namespace boost::unit_test;

struct global_fixture // 全局测试夹具类
{
	global_fixture(){ cout << ("global setup\n"); }
	~global_fixture(){ cout << ("global teardown\n"); }
};
// 该宏定义的夹具类被应用于整个测试用例的所有测试套件, 包括主测试套件
BOOST_GLOBAL_FIXTURE(global_fixture);


struct assign_fixture // 测试套件夹具类
{
	assign_fixture(){ cout << ("suit setup\n"); }
	~assign_fixture(){ cout << ("suit teardown\n"); }
	vector<int> v;    // 所有测试用例都可以用的成员变量
};
// 定义测试套件级别的夹具
BOOST_FIXTURE_TEST_SUITE(s_assign, assign_fixture);

BOOST_AUTO_TEST_CASE(t_assign1) // 测试用例1, 测试+=操作符
{
	v += 1, 2, 3, 4;
	BOOST_CHECK_EQUAL(v.size(), 4);
	BOOST_CHECK_EQUAL(v[2], 3);
}

BOOST_AUTO_TEST_CASE(t_assign2) // 测试用例2, 测试push_back函数
{
	push_back(v)(10)(20)(30);
	BOOST_CHECK_EQUAL(v.empty(), false);
	BOOST_CHECK_LT(v[0], v[1]);
}
/*
以上代码打印如下信息:
global setup
Running 2 test cases...
suit setup
suit teardown
suit setup
suit teardown

*** No errors detected
global teardown
*/
BOOST_AUTO_TEST_SUITE_END() // 测试套件结束

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值