如何分文件编写Boost Test的test case
问题阐述
在使用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进来,就可以实现你的归纳梦了!这样多个文件也方便团队多人协同编写测试代码,岂不快哉?
test1.h
#ifndef BOOSTLEARN_TEST1_H
#define BOOSTLEARN_TEST1_H
#include"boost/test/unit_test.hpp"
BOOST_AUTO_TEST_SUITE( s_suit1 )
BOOST_AUTO_TEST_CASE( t_case1 )
{
BOOST_CHECK_EQUAL(1,1);
}
BOOST_AUTO_TEST_CASE( t_case2 )
{
BOOST_CHECK_EQUAL(3,1);
}
BOOST_AUTO_TEST_SUITE_END()
#endif//BOOSTLEARN_TEST1_H
- #ifndef BOOSTLEARN_TEST2_H
#define BOOSTLEARN_TEST2_H
#include"boost/test/unit_test.hpp"
BOOST_AUTO_TEST_SUITE( s_suit2 )
BOOST_AUTO_TEST_CASE( t_case1 )
{
BOOST_CHECK_EQUAL(1,1);
}
BOOST_AUTO_TEST_CASE( t_case2 )
{
BOOST_CHECK_EQUAL(3,1);
}
BOOST_AUTO_TEST_SUITE_END()
#endif//BOOSTLEARN_TEST2_H
#ifndef BOOSTLEARN_TESTCOMMON_H
#define BOOSTLEARN_TESTCOMMON_H
#define BOOST_TEST_MODULE TestUnit
//请在下面添加每一个测试单元的头文件----
#include"test1.h"
#include"test2.h"
//...add here
- //---------------------------------
#endif//BOOSTLEARN_TESTCOMMON_H
TestUnit.cpp
- #include"TestCommon.h"
运行结果
原文链接: https://www.cnblogs.com/xujintao/p/8325116.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/268098
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!