C++编程:C++ 多文件测试方案

 

如何分文件编写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

  1. #define BOOST_TEST_MODULE example
  2. #include<boost/test/included/unit_test.hpp>
  3. BOOST_AUTO_TEST_SUITE(test_suite1)
  4. BOOST_AUTO_TEST_CASE(test_case1)
  5. {
  6. BOOST_TEST_MESSAGE("running test_case1");
  7. BOOST_TEST(true);
  8. }
  9. BOOST_AUTO_TEST_CASE(test_case2)
  10. {
  11. BOOST_TEST_MESSAGE("running test_case2");
  12. BOOST_TEST(true);
  13. }
  14. 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

  1. #ifndef BOOSTLEARN_TEST1_H
  2. #define BOOSTLEARN_TEST1_H
  3. #include"boost/test/unit_test.hpp"
  4. BOOST_AUTO_TEST_SUITE( s_suit1 )
  5. BOOST_AUTO_TEST_CASE( t_case1 )
  6. {
  7. BOOST_CHECK_EQUAL(1,1);
  8. }
  9. BOOST_AUTO_TEST_CASE( t_case2 )
  10. {
  11. BOOST_CHECK_EQUAL(3,1);
  12. }
  13. BOOST_AUTO_TEST_SUITE_END()
  14. #endif//BOOSTLEARN_TEST1_H
 
test2.h
  1. #ifndef BOOSTLEARN_TEST2_H
  2. #define BOOSTLEARN_TEST2_H
  3. #include"boost/test/unit_test.hpp"
  4. BOOST_AUTO_TEST_SUITE( s_suit2 )
  5. BOOST_AUTO_TEST_CASE( t_case1 )
  6. {
  7. BOOST_CHECK_EQUAL(1,1);
  8. }
  9. BOOST_AUTO_TEST_CASE( t_case2 )
  10. {
  11. BOOST_CHECK_EQUAL(3,1);
  12. }
  13. BOOST_AUTO_TEST_SUITE_END()
  14. #endif//BOOSTLEARN_TEST2_H
 
TestCommon.h
  1. #ifndef BOOSTLEARN_TESTCOMMON_H
  2. #define BOOSTLEARN_TESTCOMMON_H
  3. #define BOOST_TEST_MODULE TestUnit
  4. //请在下面添加每一个测试单元的头文件----
  5. #include"test1.h"
  6. #include"test2.h"
  7. //...add here
  8. //---------------------------------
  9. #endif//BOOSTLEARN_TESTCOMMON_H

TestUnit.cpp

  1. #include"TestCommon.h"

运行结果

C++编程:C++ 多文件测试方案

 

 

原文链接: https://www.cnblogs.com/xujintao/p/8325116.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++编程:C++ 多文件测试方案

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/268098

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午7:06
下一篇 2023年2月14日 下午7:07

相关推荐