使用argc和argv进行Boost测试时遇到问题

时间:2018-11-08 00:23:06

标签: c++11 boost-test

我对尝试进行Boost测试感到非常沮丧 使用argc和argv。根据堆栈溢出的其他答案, 以下代码(使用Boost 1.67.0)是我所获得的最接近的代码。然而, 它不会编译,因为它需要一个额外的}。我加了一个} 在不同的地方尝试了很多其他的东西,但是我不能 我的生活让这个工作。编辑:代码已平衡{}。我怀疑与Boost宏有些微妙之处,但我不知道它是什么。

请有人告诉我具体要进行哪些更改以使此代码 编译并执行应做的事情。现在,我非常 沮丧。

#define BOOST_TEST_MODULE how_to
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>

#include <iostream>
#include <vector>
#include <string>

using std::cout;
using std::endl;
using std::vector;
using std::string;

struct F_ArgsFixture {
   F_ArgsFixture()
   : argc(boost::unit_test::framework::master_test_suite().argc),
     argv(boost::unit_test::framework::master_test_suite().argv)
   {
   }

   ~F_ArgsFixture() {}

   int argc;
   char **argv;
};

BOOST_FIXTURE_TEST_SUITE( how_to, F_ArgsFixture )

BOOST_FIXTURE_TEST_CASE( test_name1, F_ArgsFixture )
{
   F_ArgsFixture FF;
   string x = FF.argv[1];
   cout << "1 " << x << endl;
}

BOOST_FIXTURE_TEST_CASE( test_name2, F_ArgsFixture )
{
   F_ArgsFixture FF;
   string x = FF.argv[1];
   cout << "2 " << x << endl;
}

1 个答案:

答案 0 :(得分:0)

documentation所示,您的代码存在以下问题:

  • BOOST_FIXTURE_TEST_SUITE为套件的每个测试用例声明了固定装置,因此不需要在测试套件中调用BOOST_FIXTURE_TEST_CASE,而BOOST_AUTO_TEST_CASE就足够了
  • BOOST_FIXTURE_TEST_SUITE启动一个新的测试套件,该测试套件应由BOOST_AUTO_TEST_SUITE_END()关闭

可以找到编译的代码版本here