每个套件的 boost-test 初始化(非大小写)

Ale*_*k86 5 c++ fixture suite boost-test

我需要初始化一些变量,它们在 BOOST_AUTO_TEST_SUITE 中是“全局的”,因此它们的构造函数将在套件启动时被调用,并且它们的析构函数将在最后一个相应的 BOOST_AUTO_TEST_CASE 完成后被调用

有人知道我该怎么做吗?看起来全局装置不是解决方案......

DaR*_*ich 7

我不太确定接受的答案是否正确,因为如果我使用boost 网站上测试代码

#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>

struct F {
    F() : i( 0 ) { BOOST_TEST_MESSAGE( "setup fixture" ); }
    ~F()         { BOOST_TEST_MESSAGE( "teardown fixture" ); }

    int i;
};

//____________________________________________________________________________//

BOOST_FIXTURE_TEST_SUITE( s, F )

BOOST_AUTO_TEST_CASE( test_case1 )
{
    BOOST_CHECK( i == 1 );
}

//____________________________________________________________________________//

BOOST_AUTO_TEST_CASE( test_case2 )
{
    BOOST_CHECK_EQUAL( i, 0 );
}

//____________________________________________________________________________//

BOOST_AUTO_TEST_SUITE_END()      
Run Code Online (Sandbox Code Playgroud)

那么预期的调用顺序应该是:

setup fixture
test_case1
test_case2
teardown fixture
Run Code Online (Sandbox Code Playgroud)

但实际上是这样的:

setup fixture
test_case1
teardown fixture
setup fixture
test_case2
teardown fixture
Run Code Online (Sandbox Code Playgroud)

我不知道这是否是一个错误,因为通过阅读BOOST_FIXTURE_TEST_SUITE文档,我期望第一个行为。如果我使用BOOST_FIXTURE_TEST_CASE.


Sve*_*ely 1

备查:

我相信,从 1.36 开始,它已添加到库中。