I'm not quite sure if the accepted answer is correct, because if I use the test code from the boost web site:
#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()
Then the expected call sequence should be:
setup fixture
test_case1
test_case2
teardown fixture
But in fact it is this:
setup fixture
test_case1
teardown fixture
setup fixture
test_case2
teardown fixture
I don't know if this is a bug, because from reading the BOOST_FIXTURE_TEST_SUITE
documentation, I would expect exactly the first behavior. I can also get the second behavior if I use BOOST_FIXTURE_TEST_CASE
.