当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

<b>Boost Test学习总结(C++)</b>[VC/C++编程]

赞助商链接



  本文“<b>Boost Test学习总结(C++)</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1.常用的C++单元测试框架

测试驱动开辟(TDD)已经是一种非常风行的开辟方法了,在Java和.Net中都供应了非常好的单元测试框架,近来研究C++下面的单元测试,发现其实在C++中还是有很多挑选:

CPPUnit:闻名的XUnit系列产品之一,熟习JUnit、NUnit的开辟人员可以很快上手.

CXXTest:需求举行预处理,需求安装Perl或Python.

Boost Test:功效强盛,供应了自动注册和手动注册两种方法,更重要的是来自千锤百炼的Boost库.

Google Test:Google在去年开源的测试框架,据说其内部上千个项目均采取该框架举行单元测试.

2.Boost Test起步

先来看一个简单的Boost Test示例(来自Boost文档):

测试初步

1#define BOOST_TEST_MODULE example
2
3#include <boost/test/unit_test.hpp>
4
5
6
7int add(int i, int j);
8
9
10
11BOOST_AUTO_TEST_SUITE(minimal_test)
12
13
14
15BOOST_AUTO_TEST_CASE(my_test)
16
17{
18
19    BOOST_CHECK(add(2, 2) == 5);
20
21    BOOST_REQUIRE(add(2, 2) == 4);
22
23    if(add(2, 2) != 4)
24
25        BOOST_ERROR("oops!");
26
27    if(add(2, 2) != 4)
28
29        BOOST_FAIL("oops!");
30
31    if(add(2, 2) != 4)
32
33        throw "oops!";
34
35    BOOST_CHECK_MESSAGE(add(2, 2) == 4, "add(..) result: " << add(2, 2));
36
37    BOOST_CHECK_EQUAL(add(2, 2), 4);
38
39}
40
41
42
43BOOST_AUTO_TEST_SUITE_END()
44
45

首先,需求定义#define BOOST_TEST_MODULE example大概#define BOOST_AUTO_TEST_MAIN,不然测试模块初始化函数需求手动实现;然后宏“BOOST_AUTO_TEST_SUITE(minimal_test)”将成立一个名为minimal_test的测试套件,并将其加入到测试模块中.宏“BOOST_AUTO_TEST_CASE(my_test)”将成立一个名为“my_test”的测试用例,并将其加入到测试套件minimal_test中.

关于测试模块常犯的一个错误是在差别的测试文件中定义差别的“#define BOOST_TEST_MODULE example”,最后将招致“multiple definition of ‘init_unit_test_suite(int, char**)’”错误,缘由是在一个测试程序中只答应存在一个定义一个测试模块.测试模块中存在一个主测试套件,全部未明确包含到测试套件中的测试用例将被包含到主测试套件中.

下面是具体的测试历程了,在程序中展示了七种差别的方法来对函数add举行测试:

BOOST_CHECK:这种办法将查抄到的错误保存起来,测试完毕时由测试框架自动显示;

BOOST_REQUIRE:一样是查抄错误,与BOOST_CHECK差别之处在于假如发生错误时将抛出一个非常,因此后续的测试将不会持续举行;

BOOST_ERROR:可以用来对错误举行独立描写,测试完毕时由测试框架自动显示;

BOOST_FAIL:一样可以用来对错误举行独立描写,调用时将抛出一个非常;

抛出非常方法:测试框架将捕捉该非常并打印出错误信息;

BOOST_CHECK_MESSAGE:与BOOST_CHECK近似,可以在第二个参数中加入错误描写信息;

BOOST_CHECK_EQUAL:与BOOST_CHECKL近似,用来查抄两个参数能否相等.


  以上是“<b>Boost Test学习总结(C++)</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .