关于测试驱动开发,     C++的库比较多,   选择是一个问题.  
   
  Boost.Test是一个用于C++开发的测试框架,   类似的还有CPPUnit,   个人认为,   CPPUnit过多的照搬了JUnit的框架,   有比较浓厚的Java风格,   用起来总感觉有些束缚,   不是那么native.    
   
  CXXTest   我用过Symbian版本的,   好像需要Perl,   不过Symbian本身安装的时候就需要Perl,   因此对于Symbian上来说还是无所谓,而且使用Perl可以免除一些套路代码的编写.   (题外话,   Symbian啥都要,   装个Symbian   C++   SDK还要JDK1.3.2,   不知道开发J2ME是否需要安装一个GCC?   )   .    
   
  Boost.Test可以以#include一行代码的代价实现一个test-case的编写,   就测试来说,   越简单就可以越使得开发者愿意使用,    
  比起继承一个基类,   覆盖其中的一个虚拟函数来说,   Boost.Test在某些情况下就显得十分方便了.    
   
  下面是一个Hello,world般的测试例子:   测试你的系统是否1等于2   (玩笑)  
   
  #include   <boost/test/included/test_engine_monitor.hpp>                             #1  
   
  int   test_main(int   ,   char   *[])                             #2  
  {  
        BOOST_CHECK_EQUAL(1   ,   2);                           #3  
        return   1;                                                               #4  
        throw   "Ooops..";                                                 #5  
  }  
   
   
  #1     就是我前面说的一行代码的代价  
  #2     main当然已经被Boost.Test接管了,   我们就用test_main,   等着被调用.  
  #3     测试宏,   要求1   ==   2   .   当然会报错  
  #4     按照C的传统,   如果我们的test_main函数返回非0的值也是一个错误.    
  #5     异常逃出test_main外也是错误,   当然这句并不会执行.   举个例子而已.  
   
   
  然后编译运行,   例如使用VC,   那么  
   
  cl.exe     /GX   /ID:/boost   hello.cpp    
   
  D:/boost是我的Boost安装路径.   然后运行hello.exe,   结果应该不出意外是报错2个.   指出文件名,   行号等.   例如  
   
  hello.cpp(7):   error   in   "test_main_caller(   argc,   argv   )":   check   1   ==   2   failed   [1   !=   2]  
   
  D  
   
  :/boost/boost/test/impl/test_main.ipp(39):   error   in   "test_main_caller(   argc,   argv   )":   check   test_main_result   ==   0   ||   test_main_result   ==   boost::exit_success   failed  
   
   
  一个是#3的错误,   一个是#4的   .    
   
  这是最简单的情况,   适用于测试不多的情形,   如果测试比较多,   那么就应该将Boost.Test编译成一个Lib,   然后Link到这个Lib上,    
  而不是每次都整个编译一次Boost.Test,   这样可以节约编译的时间(   主要花费在#1处).    
   
  配合Boost.Build中的Bjam也是一个好主意.

boost::test相关推荐

  1. Linux下安装 boost 库

    1. 先去官网下载压缩包: https://www.boost.org/ 2. 解压后cd 进入根目录,然后执行: ./bootstrap.sh 3. 安装(时间会很长): ./b2 install ...

  2. Mysql依赖库Boost的源码安装,linux下boost库的安装

    boost'准标准库'安装过程. 安装的是boost_1_60_0. (1)首先去下载最新的boost代码包,网址www.boost.org. (2)进入到自己的目录,解压: bzip2 -d boo ...

  3. 函数指针amp;绑定: boost::functoin/std::function/bind

    see link: https://isocpp.org/wiki/faq/pointers-to-members function vs template: http://stackoverflow ...

  4. Boost 1.53.0 发布,可移植的C++标准库

    Boost 1.53.0 发布了,包含了 5 个新的库,修复了一些安全漏洞以及 Boost.Locale 组件的 bug . 新增的 5 个库包括: Boost.Atomic Boost.Corout ...

  5. cmake开发环境 linux qt_一步步搭建CMake+QT+VTK+BOOST开发环境

    开发环境: 1.可以迅速处理大量并发网络数据包,ASIO库和winpcap 4.1.3库; 2.处理与显示点云模型数据,使用VTK 8.2.0库; 3.项目使用CMake+VC2017编译,GUI使用 ...

  6. boost::asio使用UDP协议通信源码实现

    说明:以下源码来自参考文献[1], 比原文更丰富, 更有指导意义, 方便日后参考. udp servr端源码 //g++ -g udp_server.cpp -o udp_server -lboost ...

  7. 使用boost解析域名服务

    下面的源码给出了使用boost::asio进行域名解析的方法. //g++ -g resolver_demo.cpp -o resolver_demo -lboost_system -lpthread ...

  8. boost::asio异步模式的C/S客户端源码实现

    异步模式的服务器源码 //g++ -g async_tcp_server.cpp -o async_tcp_server -lboost_system //#include <iostream& ...

  9. boost::asio中的C/S同步实例源码

    近来狂热地研究boost的开发技术,现将读书笔记整理如下: 需要说明的是, 本博该专题下面关于boost的源码是采用boost1.55版本, 运行在Ubuntu 14.04 64bit下面, 使用ap ...

  10. 【Boost】noncopyable:不可拷贝

    [CSDN]:boost::noncopyable解析 [Effective C++]:条款06_若不想使用编译器自动生成地函数,就该明确拒绝 1.example boost::noncopyable ...

最新文章

  1. RFM模型分析与客户细分
  2. Android 设置EditText光标位置(转)
  3. 鸿蒙公测报名表填写,鸿蒙公测第二期报名公测版_华为鸿蒙os2.0第二期报名申请内测版 - 风云下载...
  4. Python:图片懒加载技术
  5. python3框架的rf_pythonRF框架
  6. leangoo如何邀请成员加入看板?
  7. leetcode 179. 最大数(排序)
  8. python使用线程池多线程执行,并得到返回的结果
  9. 外键mysql缺省级联_mysql的外键约束级联修改和删除整理
  10. directx修复工具win7_魔兽争霸3不能初始化DirectX,怎么解决?说白了就是在游戏安装包下载之后,无法正常运行程序。...
  11. 锐起3.1无盘服务器,[迎新春]锐起3.1无盘XP万能包13V2(IE8版本)
  12. EtherCAT报文格式详解
  13. 愤怒的小鸟 高清完整版下载
  14. MaNGOS工程概介
  15. nfc ntag21x ultralight 内存结构
  16. WXP380 电容式MEMS高性能数字气压传感器 电容式MEMS压力传感器快速代DPS310 BMP380 SLP06 HP303B “电容式”噪声超低的高精度MEMS气压传感器;
  17. 基于3D关节点的人体动作识别综述(转)
  18. Power Query 系列 (01) - Power Query 介绍
  19. Stream流的常用方法以及代码练习
  20. 用Jupyter-Notebook爬取网页数据实例4

热门文章

  1. python机器学习应用mooc_(3)决策树
  2. 【POJ 3041】Asteroids【网络流 —— 最小点覆盖】
  3. tdoa/aoa定位的扩展卡尔曼滤波定位算法matlab源码,03TDOA_AOA定位的扩展卡尔曼滤波算法MATLAB源代码...
  4. 217.存在重复元素 (力扣leetcode) 博主可答疑该问题
  5. php pdoconnection,php使用pdo连接报错Connection failed SQLSTATE的解决方法
  6. mysql常见的存储引擎
  7. linux网卡配置规范
  8. Docker与.Net项目类型
  9. ArrayList源码简单剖析 及与linkedlist vector 区别
  10. linux设备驱动归纳总结(三):1.字符型设备之设备申请【转】