[boost] : lightweight_test库
lightweight_test轻量级单元测试框架, 只支持最基本的单元测试, 不支持测试用例, 测试套件的概念, 简单小巧, 适合要求不高或者快速测试的工作.
基本用法
需要包含头文件#include <boost/core/lightweight_test.hpp>
lightweight_test库定义了五个断言宏
| BOOST_TEST(e) | 断言表达式成立 | 
| BOOST_ERROR(s) | 直接断言失败, 输出消息s | 
| BOOST_TEST_EQ(e1, e2) | 断言两个表达式相等 | 
| BOOST_TEST_NE(e1, e2) | 断言两个表达式不等 | 
| BOOST_TEST_THROWS(e, ex) | 断言表达式e抛出异常ex | 
// Copyright (c) 2015
// Author: Chrono Law
#include <iostream>
using namespace std;
#include <boost/smart_ptr.hpp> // shared_ptr
#include <boost/core/lightweight_test.hpp>
int main()
{
    auto p = make_shared<int>(10);
    BOOST_TEST(*p == 10);
    BOOST_TEST(p.unique());
    BOOST_TEST(p);
    BOOST_TEST_EQ(p.use_count(), 1);
    BOOST_TEST_NE(*p, 20);
    p.reset();
    BOOST_TEST(!p);
    BOOST_TEST_THROWS(*p, std::runtime_error);
    BOOST_ERROR("error accured!!");
    return boost::report_errors(); // 输出测试报告
}
输出以下信息:
lightweight_test.cpp(23): Exception 'std::runtime_error' not thrown in function 'int main()'
lightweight_test.cpp(24): error accured!! in function 'int main()'
2 errors detected.
注意: 在测试结束时必须调用boost::report_errors(), 否则会发生BOOST_ASSERT断言错误.
测试元编程
lightweight_test提供对元编程的有限支持, 需要包含头文件#include <boost/core/lightweight_test_trait.hpp>
// Copyright (c) 2015
// Author: Chrono Law
#include <type_traits> // is_integral<T>, is_function<T>
#include <iostream>
using namespace std;
#include <boost/core/lightweight_test.hpp>
#include <boost/core/lightweight_test_trait.hpp>
int main()
{
    BOOST_TEST_TRAIT_TRUE((is_integral<int>));
    BOOST_TEST_TRAIT_FALSE((is_function<int>));
    return boost::report_errors();
}
[boost] : lightweight_test库的更多相关文章
- [boost] : test库
		最小化的测试套件minimal_test test库提供一个最小化的测试套件minimal_test, 类似lightweight_test适合入门级测试. 需要包含文件文#include <b ... 
- 如何在WINDOWS下编译BOOST C++库 .
		如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25 写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0. 1)下载boost ... 
- Windows下如何使用BOOST C++库 .
		Windows下如何使用BOOST C++库 我采用的是VC8.0和boost_1_35_0.自己重新编译boost当然可以,但是我使用了 http://www.boostpro.com/produc ... 
- Boost线程库学习笔记
		一.创建一个线程 创建线程 boost::thread myThread(threadFun); 需要注意的是:参数可以是函数对象或者函数指针.并且这个函数无参数,并返回void类型. 当一个thre ... 
- Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答
		Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答 Boost正则表达式库regex常用search和match示例 发表回复 Boo ... 
- Boost::thread库的使用
		阅读对象 本文假设读者有几下Skills [1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念. [2]熟悉C++开发,在开发工具中,能够编译.设置boost::thread库. ... 
- 一起学习Boost标准库--Boost.StringAlgorithms库
		概述 在未使用Boost库时,使用STL的std::string处理一些字符串时,总是不顺手,特别是当用了C#/Python等语言后trim/split总要封装一个方法来处理.如果没有形成自己的com ... 
- 一起学习Boost标准库--Boost.texical_cast&format库
		今天接续介绍有关字符串表示相关的两个boost库: lexical_cast 将数值转换成字符串 format 字符串输出格式化 首先,介绍下lexical_cast ,闻其名,知其意.类似C中的at ... 
- Boost C++ 库 中文教程(全)
		Boost C++ 库 目录 第 1 章 简介 第 2 章 智能指针 第 3 章 函数对象 第 4 章 事件处理 第 5 章 字符串处理 第 6 章 多线程 第 7 章 异步输入输出 第 8 章 进程 ... 
随机推荐
- Asterisk——part 1
			Asterisk Russell Bryant Asterisk1 is an open source telephony applications platform distributed unde ... 
- Openwrt Support RESET Button (5)
			1 Scope of Document This document describes how to support reset button under openwrt system2 Requir ... 
- bzoj4001
			题解: 答案就是n*(n+1)/2/(2*n-1) 代码: #include<bits/stdc++.h> double n; int main() { scanf("%lf&q ... 
- 如何高效使用Google
			摘自http://simplyy.space/ 核心思想 1.首先,想好你想要寻找什么. 哪些词能够最好地描述你要寻找的信息或者概念? 哪些词是你能够用来替换的? 有没有那些词是可以不必包括在你想要搜 ... 
- EasyGui 学习文档【超详细中文版】
			演示使用 Python 3.3.3 版本 0. 安装 EasyGui 官网:http://easygui.sourceforge.net 最新版: <ignore_js_op> easyg ... 
- <NET CLR via c# 第4版>笔记 第17章 委托
			17.1 初识委托 .net 通过委托来提供回调函数机制. 委托确保回调方法是类型安全的. 委托允许顺序调用多个方法. 17.2 用委托回调静态方法 将方法绑定到委托时,C# 和 CLR 都允许引用类 ... 
- vs2010将写好的软件打包安装包经验
			(1) 用VS2010打开已经编写好准备做安装包的软件程序,右击解决方案,添加新建项目. (2) 在“新建项目”对话框中,选择“其他项目类型”,再选择“安装和部署”,然后在模板中选择“安装项目” (3 ... 
- 内网dns劫持
			进行内网的dns劫持呢 ---> 我们需要用到ettercap 和ettercap内置的工具dns_spoof 1.我们需要开启ip转发 echo >/proc/sys/net/ipv4/ ... 
- magento的常用调用
			1,CMS调用网站的Url <a href="{{store direct_url="about-us"}}">About Us</a> ... 
- C++  内存拷贝函数    memcpy
			在C/C++中经常会遇到对一段固定的连续内存进行拷贝操作, 这时候我们就需要用到 <cstring> 头文件 中的 memcpy 函数. 具体使用如下: 其中 , ... 
