Boost库单元测试使用配置
来源:互联网 发布:js url encode php 编辑:程序博客网 时间:2024/06/05 15:38
Boost库单元测试使用配置
1 Boost库简介
Boost官网:http://www.boost.org/。
中文简介见百度百科:http://baike.baidu.com/view/663725.htm。
Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。
Boost中比较有名气的几个库:
- Regex 正则表达式库。
- Pool 内存池管理。
- smart_ptr 5个智能指针,学习智能指针必读。
Boost学习书籍《Boost程序库完全开发指南》。
2下载源文件
版本:Boost 1.48.0
地址:http://sourceforge.net/projects/boost/files/boost/1.48.0/
3Bjam工具生成
参考:http://blog.csdn.net/great3779/article/details/6977922/
编译器:vs2005。
解压源文件到D:\boost_1_48_0
运行D:\boost_1_48_0\bootstrap.bat,生成bjam.exe。
4编译Boost.test模块
Boost.test为单元测试模块,其他模块编译方式相同。
Test: Support for simple program testing, full unit testing, and for program execution monitoring, from Gennadiy Rozental.
静态库生成命令:bjam stage --toolset=msvc-8.0 --with-test link=static debug release
动态库生成命令:bjam stage --toolset=msvc-8.0 --with-test link=shared debug release
默认生成位置:
include paths:D:/boost_1_48_0
library paths:D:\boost_1_48_0\stage\lib
为了使用方便,一般编译为静态库。以便于最终发布程序,不需要打包Boost的Dll。且根据实际编译情况,发现静态库编译速度较快。
生成文件描述。
使用静态调试版本C运行时库(LIBCMTD.LIB和LIBCPMTD.LIB)/MTdlibboost_unit_test_framework-vc80-mt-1_48.lib静态库,多线程
使用静态版本C运行时库(LIBCMT.LIB和LIBCPMT.LIB)/MTboost_unit_test_framework-vc80-mt-gd-1_48.lib静态库,多线程,调试版本
使用动态调试版本C运行时库(MSVCRTD.LIB和MSVCPRTD.LIB)/MDdboost_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。
6 Bjam工具实用命令
参考:http://hi.baidu.com/smart_bee/blog/item/360f23d1c3a3fc87a0ec9cb6.html
参考:http://hi.baidu.com/gclsoft/blog/item/293af0833de60ca26d8119a6.html
本人推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录 (E:\SDK\boost_1_39_0\boost,只比include目录多几个非hpp文件,都很小),
所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间。toolset指定编译器,可选的如borland、gcc、msvc(VC6)、msvc- 8.0(VS2005)、msvc- 9.0(VS2008)等。--with-<library>只编译指定的库,如输入--with-regex就只编译regex库了。--stagedir/prefix=<stagedir>/<prefixdir>stage时使用stagedir,install时使用prefix, 表示编译生成文件的路径。
推荐给不同的IDE指定不同的目录,如VS2008对应的是E:\SDK\boost_1_39_0\bin\vc9,
VC6对 应的是E:\SDK\boost_1_39_0\bin\vc6,否则都生成到一个目录下面,难以管理。
如果使用了install参数,那么还将生成头文 件目录,
vc9对应的就是E:\SDK\boost_1_39_0\bin\vc9\include\boost-1_39\boost,
vc6类似(光 这路径都这样累赘,还是使用stage好)。--build-dir=<builddir>编译生成的中间文件的路径。
编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了)。
默认就在根目录(E:\SDK \boost_1_39_0)下,目录名为bin.v2,
等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。link=static|shared生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用 static方式。
一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。runtime-link=static|shared动态/静态链接C/C++运行时库。同样有shared和static两种方 式,
这样runtime-link和link一共可以产生4种组合方式,
各人可以根据自己的需要选择编译。一般link只选static的话,
只需要编译 2种组合即可,即link=static runtime-link=shared和link=static runtime-link=static。threading=single|multi单/多线程编译。
一般都写多线程程序,当然要指定multi方式了;
如果需要编写单线 程程序,那么还需要编译单线程库,可以使用single方式。debug/release编译debug/release版本。一般都是程序的debug版本对应库的 debug版本,所以两个都编译。
- Boost库单元测试使用配置
- Boost库单元测试使用配置
- 使用单元测试 Boost.test
- boost 中的 单元测试 库
- boost 单元测试
- boost单元测试
- (VC8)配置boost库使用环境
- c++下boost库的使用配置
- Qt使用Boost库的配置
- Jacoco单元测试配置和使用
- VC++6.0配置使用boost
- Boost库安装配置
- Boost库安装配置
- vs2008配置boost库
- vs2008配置boost库
- Xcode5配置boost库
- 配置boost库
- VS2008配置boost库
- BZOJ 1778 Usaco2010 驱逐猪猡
- hadoop正式学习之redis---redis优化
- MySQL 数据的插入、更新和删除
- 仿QQ获取设备中APK并分享
- Android5.0之CoordinatorLayout的使用
- Boost库单元测试使用配置
- 小白工程师 html+php+mysql 实例
- BZOJ4503 两个串
- 判断连通性 欧拉回路的性质 UVA10129
- ICMP协议
- 什么是jdbc
- C++单元测试:boost.test
- Android群英传笔记——第十章:Android性能优化
- hdu 4521 小明系列问题——小明序列(求间距大于d的最长上升序列)