C++ 使用boost为测试类实现测试套件生成器的现代方法是什么?

C++ 使用boost为测试类实现测试套件生成器的现代方法是什么?,c++,boost,c++14,c++17,boost-test,C++,Boost,C++14,C++17,Boost Test,Test文档中的示例似乎主要涉及C++03代码 我想知道在init\u unit\u TEST\u套件中是否有一种更为C++14/C++17的方式来组合BOOST\u TEST\u案例s 这是我从文档中得到的。我只与lambdas交换了boost::bind。我想不出该准则还有什么进一步的“现代化”。任何人都可以吗 简介: #include <boost/test/included/unit_test.hpp> #include <memory> // shared pt

Test文档中的示例似乎主要涉及C++03代码

我想知道在
init\u unit\u TEST\u套件
中是否有一种更为C++14/C++17的方式来组合
BOOST\u TEST\u案例
s

这是我从文档中得到的。我只与lambdas交换了
boost::bind
。我想不出该准则还有什么进一步的“现代化”。任何人都可以吗

简介:

#include <boost/test/included/unit_test.hpp>
#include <memory> // shared ptr

using namespace boost::unit_test;
using namespace std::literals::string_literals;
建造套房:

test_suite*
init_unit_test_suite( int argc, char* argv[] )
{
    auto tester = std::make_shared<test_class>();
    auto &ts = framework::master_test_suite();
    ts.add( BOOST_TEST_CASE( [=](){ tester->test_method1(); } ));
    ts.add( BOOST_TEST_CASE( [=](){ tester->test_method2(); } ));
    return nullptr;
}
测试套件*
初始单元测试套件(int argc,char*argv[])
{
自动测试仪=标准::使_共享();
auto&ts=framework::master_test_suite();
添加(BOOST_TEST_CASE([=](){tester->TEST_method1();}));
添加(BOOST_TEST_CASE([=](){tester->TEST_method2();}));
返回空ptr;
}

我会想出一种摆脱
调用的方法。添加
调用,并使用
{}
s至少进行批量添加。但这可能更多的是关于代码评审的主题;去那里检查它是否符合他们的标准。pinging@GennadiyRozental用于添加初始值设定项(列表支持:),还有@rafi作为另一个增强。测试维护我想到的问题是“为什么要使用测试类”?如果您想在多个测试用例之间共享一个状态,最好使用一个fixture。否则,几乎没有测试类添加。
test_suite*
init_unit_test_suite( int argc, char* argv[] )
{
    auto tester = std::make_shared<test_class>();
    auto &ts = framework::master_test_suite();
    ts.add( BOOST_TEST_CASE( [=](){ tester->test_method1(); } ));
    ts.add( BOOST_TEST_CASE( [=](){ tester->test_method2(); } ));
    return nullptr;
}