我对尝试进行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;
}
答案 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