头文件:

#include <boost/test/unit_test.hpp>

编译加:-lboost_unit_test_framework

单元测试:

需要定义BOOST_TEST_MAIN做为主测试入口

http://www.ibm.com/developerworks/cn/aix/library/au-ctools1_boost/

使用注意:

#define BOOST_TEST_MAIN  //一定要有,且要放在unit_tset.hpp的前面,否则:(unit_test_main.obj) : error LNK2019: 无法解析的外部符号 "class boost::unit_test::test_suite * __

#include <boost/test/unit_test.hpp>

Boost库单元测试使用配置
为了使用方便,一般编译为静态库。以便于最终发布程序,不需要打包Boost的Dll。且根据实际编译情况,发现静态库编译速度较快。
生成文件描述。
文件名 含义 编译选项
libboost_unit_test_framework-vc80-mt-gd-1_48.lib 静态库,多线程,调试版本 
使用静态调试版本C运行时库(LIBCMTD.LIB和LIBCPMTD.LIB)
/MTd
libboost_unit_test_framework-vc80-mt-1_48.lib 静态库,多线程 
使用静态版本C运行时库(LIBCMT.LIB和LIBCPMT.LIB)
/MT
boost_unit_test_framework-vc80-mt-gd-1_48.lib 静态库,多线程,调试版本 
使用动态调试版本C运行时库(MSVCRTD.LIB和MSVCPRTD.LIB)
/MDd
boost_unit_test_framework-vc80-mt-1_48.lib 静态库,多线程 
使用动态版本C运行时库(MSVCRT.LIB和MSVCPRT.LIB)
/MD

5 Boost.test调用示例
Boost库的使用学习,见自带index.htm,本例路径为D:\boost_1_48_0\index.htm。
参考:http://www.cnblogs.com/zhihuichien/archive/2010/09/01/1815185.html
参考:http://www.oschina.net/code/snippet_126720_4924

关于单元测试的总结。

  • 需求确定后,先写单元测试代码,测试代码随需求而变。
  • 测试代码着眼于被测代码应该如何运行,而不是复现被测代码是如何实现的。
  • 能否写好单元测试代码表示对需求的理解是否到位。
  • 如果每个模块都经过单元测试,那么集成后出现的问题就可以确认为是模块间传递消息时出现的问题,从而将bug隔离出来,这是单元测试的真正亮点。

创建示例工程。

  • vs2005创建win32控制台工程,例工程名为BoostTest。
  • 配置头文件路径。

ConfigurationProperties->C/C++->General->Additional Include Directories路径设置。

对应本例,设置为D:\boost_1_48_0。

  • Lib库路径配置

Configuration Properties->Linker->General->AdditionalLibrary Directories路径设置。

对应本例,设置为D:\boost_1_48_0\stage\lib。

  • 依赖库设置

设置项ConfigurationProperties->Linker->Input->Additional Dependencies。

Debug为:libboost_unit_test_framework-vc80-mt-gd-1_48.lib。

Release为:libboost_unit_test_framework-vc80-mt-1_48.lib。

BoostTest.cpp源码如下:
#define BOOST_TEST_MAIN
#include <boost/test/included/unit_test.hpp>
#include <boost/assign.hpp>
#include <iostream>
using namespace std; struct global_fixture
{
    global_fixture() { cout << ("global setup\n") << endl; }
    ~global_fixture() { cout << ("global teardown\n") << endl; }
}; BOOST_GLOBAL_FIXTURE(global_fixture); struct assign_fixture
{
    assign_fixture() { cout << ("suit setup\n") << endl; }
    ~assign_fixture() {cout << ("suit teardown\n") << endl; }
    vector<int> v;
};  BOOST_FIXTURE_TEST_SUITE(s_assign, assign_fixture) BOOST_AUTO_TEST_CASE(t_assign_1)
{
    using namespace boost::assign;     v += 1,2,3,4;
    BOOST_CHECK_EQUAL(v.size(), 4);
    BOOST_CHECK_EQUAL(v[2], 4);
} BOOST_AUTO_TEST_SUITE_END() 本例是个简单的单元测试。
用来检测vector容器,条目数是否为4,以及第三个值是否为4。 运行程序,输出信息为:error in "t_assign_1": check v[2] == 4 failed [3 != 4]。
检测出第三个值不为4。

boost单元测试框架的更多相关文章

  1. 如何在VS2013中进行Boost单元测试

    对于如何在VS2013中进行Boost单元测试,这方面资料太少.自己也因此走了不少弯路.下文将会阐述一下如何在VS2013中进行Boost单元测试. 在开始Boost单元测试之前,我们需要先安装VS2 ...

  2. google mock C++单元测试框架

    转:google mock C++单元测试框架 2012-03-12 09:33:59 http://blog.chinaunix.net/uid-25748718-id-3129590.html G ...

  3. javascript单元测试框架mochajs详解

    关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...

  4. Google C++单元测试框架GoogleTest(总)

    之前一个月都在学习googletest框架,对googletest的文档都翻译了一遍,也都发在了之前的博客里,另外其实还有一部分的文档我没有发,就是GMock的CookBook部分:https://g ...

  5. Google C++单元测试框架GoogleTest---GMock的CheatSheet文档

    CheatSheet文档中包含了GMock所有常用的东西,看了这个基本上就可以用它了,本文接上篇博文:Google C++单元测试框架GoogleTest---Google Mock简介--概念及基础 ...

  6. Google C++单元测试框架GoogleTest---AdvancedGuide(译文)下

    因为AdvancedGuide文档太长,分上下两部分,本文档接googletest--AdvancedGuide(译文)上:Google C++单元测试框架GoogleTest---AdvancedG ...

  7. JavaScript单元测试框架JsUnit基本介绍和使用

    JavaScript单元测试框架JsUnit基本介绍和使用 XUnit framework XUnit是一套标准化的独立于语言的概念和结构集合,用于编写和运行单元测试(Unit tests). 每一个 ...

  8. Google C++单元测试框架GoogleTest---GTest的Sample1和编写单元测试的步骤

    如果你还没有搭建gtest框架,可以参考我之前的博客:http://www.cnblogs.com/jycboy/p/6001153.html.. 1.The first sample: sample ...

  9. JavaScript单元测试框架-Jasmine

    Jasmine的开发团队来自PivotalLabs,他们一开始开发的JavaScript测试框架是JsUnit,来源于著名的JAVA测试框架JUnit.JsUnit是xUnit的JavaScript实 ...

随机推荐

  1. sours insight 使用技巧

    最终在团队的气氛下还是拿回了source insight编译器: Source Insight实质上是一个支持多种开发语言(java,c ,c 等等)的编辑器,只不过由于其查找.定位.彩色显示等功能的 ...

  2. PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享

    php屏蔽电话号码中间四位: Method 1: function hidtel($phone){ $IsWhat = preg_match('/(0[0-9]{2,3}[\-]?[2-9][0-9] ...

  3. JavaScript的arguements

    ---恢复内容开始--- arguments 对象 在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们. 例如,在函数 sayHi() 中,第一个参数是 messa ...

  4. SVN入门 服务器VisualSVN Server和客户端TortoiseSVN安装

    Subversion是一个版本控制系统,相对于的RCS.CVS,采用了分支管理系统,它的设计目标就是取代CVS.互联网上免费的版本控制服务多基于Subversion. 一.SVN工作原理 SVN(Su ...

  5. 说说M451例程讲解之定时器

    关于定时器 相信很多人都不会陌生,无论是51还是32,任何微控制器,都会有定时器 定时器控制器包含 4 组 32-位定时器,TIMER0~TIMER3,提供用户便捷的计数定时功能.定时器可执行很多功能 ...

  6. JSP指令与动作元素

    include指令 语法:<%@ include file="URL" %> 其中,URL表示一个要包含的页面. include动作(是一个动作标签) 语法:<j ...

  7. 在静态工具类中需要注入mapper

    在xml中 <bean id="messageUtil" class="org.ldd.ssm.hangyu.utils.MessageUtil" ini ...

  8. Android之Handler与AsyncTask的区别

    1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可 ...

  9. java的list集合如何根据对象中的某个字段排序?

    转自:http://blog.csdn.net/wangjuan_01/article/details/51351633 List集合按某个字段排序 package wjtest_01; import ...

  10. Centos7.0配置MySQL主从服务器

    主服务器:192.168.186.131 从服务器:192.168.186.133 主从服务器mysql版本尽量保持一致,安装步骤请阅mysql安装步骤 一.修改主服务器配置文件 #   vi /et ...