Я не совсем уверен, верен ли принятый ответ, потому что, если я использую тестовый код с веб-сайта 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()
Тогда ожидаемая последовательность вызовов должна быть:
setup fixture
test_case1
test_case2
teardown fixture
Но на самом деле это так:
setup fixture
test_case1
teardown fixture
setup fixture
test_case2
teardown fixture
Я не знаю, является ли это ошибкой, потому что при чтении документации BOOST_FIXTURE_TEST_SUITE
я бы ожидал именно первого поведения. Я также могу получить второе поведение, если я использую BOOST_FIXTURE_TEST_CASE
.