快速业务通道

Boost Test学习总结(C++)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
st_suite* init_unit_test_suite( int argc, char* argv[] )

{

int params[] = { 1, 2, 3, 4, 5 };

framework::master_test_suite().

add( BOOST_PARAM_TEST_CASE( &free_test_function, params, params+5 ) );

return 0;

}

示例代码将会分别以参数1、2、3、4、5运行测试free_test_function五次。手动注册需要定义测试函数,此处为free_test_function,然后定义init_unit_test_suite函数,并在该函数中将测试用例加入到主测试套件中。BOOST_PARAM_TEST_CASE有三个参数:第一个参数为测试函数指针,第二个与第三个为输入参数迭代器。

4.夹具(Fixture)

如果在多个测试用例中需要使用数据库连接,这时候要用到夹具来自动执行安装、清理过程。Boost Test采用RAII技术来实现夹具:

1struct <fixture-name>{
2
3   <fixture-name>(); // 安装
4
5   ~<fixture-name>(); // 拆卸
6
7};

自定义一个夹具非常简单,只需要定义一个类,分别在类的构造函数和析构函数中进行安装和拆卸。另外,类的公有成员在测试用例中可以直接引用而不需要加上对象名作为前缀。例如:

夹具示例

1#define BOOST_TEST_MODULE example
2
3#include <boost/test/included/unit_test.hpp>
4
5
6
7struct F
8
9{
10
11    F() : i(0)
12
13    {
14
15        //std::cout << ("创建夹具") << std::endl;
16
17    }
18
19    ~F()
20
21    {
22
23        //std::cout << "销毁夹具" << std::endl;
24
25    }
26
27
28
29    int i;
30
31};
32
33
34
35BOOST_FIXTURE_TEST_SUITE(const_string_test, F)
36
37
38
39BOOST_FIXTURE_TEST_CASE( test_case1, F )
40
41{
42
43    BOOST_CHECK( i == 1 );
44
45    ++i;
46
47}
48
49
50
51BOOST_FIXTURE_TEST_CASE( test_case2 )
52
53{
54
55    BOOST_CHECK_EQUAL( i, 1 );
56
57}
58
59
60
61BOOST_AUTO_TEST_CASE( test_case3 )
62
63{
64
65    BOOST_CHECK( true );
66
67}
68
69
70
71BOOST_AUTO_TEST_SUITE_END()
72
73

使用宏BOOST_FIXTURE_TEST_SUITE在第二个参数中指定夹具来代替宏BOOST_AUTO_TEST_SUITE以建立测试套件,夹具将在该测试套件的所有测试用例中可用。使用宏BOOST_FIXTURE_TEST_CASE代替宏BOOST_AUTO_TEST_CASE建立测试用例,可以在该测试用例中使用夹具。需要注意的是在每一个测试用例中都将会执行夹具的安装和卸载过程。

5.测试输出

Boost Test中包括了十个级别的日志信息:

成功信息
测试树往返移动通知
通用信息
警告信息
非致命错误信息
未捕获C++异常
致命系统错误
所有信息
无信息

以上级别以由低到高的级别排列,可以在运行时参数log_level中设置,还可以使用参数log_format来制定输出格式。

可以向测试程序传递参数来定制测试结果,如“test.exe –build_info=yes –log_level=all”下面是常用的测试参数:

build_infoa:设置为yes将在开始运行测试前打印当前的操作系统版本、编译器版本等信息;

log_level:对应于十个日志级别,包括all、success、test_suite、message、warning、error、cpp_exception、system_error、fatal_error、nothing。

output_format:定义日志的输出格式。目前支持两种格式,HRF(可读格式)和XML格式;

run_test:指定要运行的测试单元,包括测试套件与测试用例,可以使用通配符“*”来制定运行符合特定条件的测试单元,如“test.exe –run_test=*/test1”将运行所有名为test1并位于主套件直接子套件的测试单元;

show_progress:设置为yes将在运行测试时显示

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号