如何分文件编写Boost Test的test case
2015-11-30 19:12
316 查看
最近在用Boost库中的Test模块编写测试代码,感觉很不错。事先声明,这篇文章不是教你如何使用Boost Test模块的,关于入门材料我建议大家还是直接参考Boost官方文档http://www.boost.org/doc/libs/1_59_0/libs/test/doc/html/index.html,英语不好的可以找找有没有中文翻译,不过翻译质量不敢保证。当然既然是学编程的,英语不好就得勤学苦练自我提升,否则有太多优秀的材料你无法阅读!这里给大家一句忠告,不要试图尝试通过CSDN,cnblogs之类的中文博客来碎片化地学习某项新技术。除非博主照搬全书,大多数博主只是在写自己的学习心得,不成系统,难免片面。更何况优秀文章少之又少,所以还是去阅读代码原作者的文档吧。
关于测试模块常犯的一个错误是在不同的测试文件中定义不同的
那么很多归纳狂魔很不开心了,既然不能放在不同的测试文件里,我一个文件塞那么多测试代码不仅很难查找,而且不利于teamwork。就不能一个测试套件对应一个文件吗?
问题阐述
在使用Boost Test编写测试模块时,首先需要定义#define BOOST_TEST_MODULE example或者
#define BOOST_AUTO_TEST_MAIN,否则测试模块初始化函数需要手动实现;然后宏
BOOST_AUTO_TEST_SUITE(test_suite)将创建一个名为
test_suite的测试套件,并将其加入到测试模块中。宏
BOOST_AUTO_TEST_CASE(test_case)将创建一个名为
test_case的测试用例,并将其加入到测试套件
test_suite中。 就像这样:
test_main.cpp
#define BOOST_TEST_MODULE example #include <boost/test/included/unit_test.hpp> BOOST_AUTO_TEST_SUITE(test_suite1) BOOST_AUTO_TEST_CASE(test_case1) { BOOST_TEST_MESSAGE("running test_case1"); BOOST_TEST(true); } BOOST_AUTO_TEST_CASE(test_case2) { BOOST_TEST_MESSAGE("running test_case2"); BOOST_TEST(true); } BOOST_AUTO_TEST_SUITE_END()
关于测试模块常犯的一个错误是在不同的测试文件中定义不同的
#define BOOST_TEST_MODULE example,最后将导致
multiple definition of ‘init_unit_test_suite(int, char**)错误,原因是在一个测试程序中只允许存在一个定义一个测试模块。
那么很多归纳狂魔很不开心了,既然不能放在不同的测试文件里,我一个文件塞那么多测试代码不仅很难查找,而且不利于teamwork。就不能一个测试套件对应一个文件吗?
解决方案
方法当然有,利用#include的预编译功能就可以了。把所有测试套件写成.h头文件,在test_main.cpp中#include进来,就可以实现你的归纳梦了!这样多个文件也方便团队多人协同编写测试代码,岂不快哉?test_suite1.h
BOOST_AUTO_TEST_SUITE(test_suite1) BOOST_AUTO_TEST_CASE(test_case1) { BOOST_TEST_MESSAGE("running test_case1"); BOOST_TEST(true); } BOOST_AUTO_TEST_CASE(test_case2) { BOOST_TEST_MESSAGE("running test_case2"); BOOST_TEST(true); } BOOST_AUTO_TEST_SUITE_END()
test_suite2.h
BOOST_AUTO_TEST_SUITE(test_suite2) BOOST_AUTO_TEST_CASE(test_case3) { BOOST_TEST_MESSAGE("running test_case3"); BOOST_TEST(true); } BOOST_AUTO_TEST_CASE(test_case4) { BOOST_TEST_MESSAGE("running test_case4"); BOOST_TEST(true); } BOOST_AUTO_TEST_SUITE_END()
test_main.cpp
#define BOOST_TEST_MODULE example #include <boost/test/included/unit_test.hpp> #include "test_suite1.h" #include "test_suite2.h"
运行结果
相关文章推荐
- Android之使用Http协议实现文件上传功能
- mysql集群之MMM简单搭建
- boost相关小知识(长期顶置更新)
- 通晓网络测试常用命令
- Nodejs学习笔记之测试驱动
- 可以测试javascript运行效果的代码
- 使用php测试硬盘写入速度示例
- python 测试实现方法
- 举例详解PHP脚本的测试方法
- Php-Redis安装测试笔记
- mysql压力测试脚本实例
- JavaScript 组件之旅(四):测试 JavaScript 组件
- Android触屏测试实例代码
- 解析libcurl在android下的移植、编译与测试
- 几个比较实用的JavaScript 测试及效验工具
- Java中对AtomicInteger和int值在多线程下递增操作的测试
- Python实现测试磁盘性能的方法
- python自动化测试实例解析
- Python之PyUnit单元测试实例
- Appium自动化测试系列2- 写一个Python测试脚本来测试一下YY语音