![]() |
> The Unit Test Framework > User's guide > Fixtures > Per test case |
To automate the task of assigning a fixture for the test case, for test case creation use the macro
BOOST_FIXTURE_TEST_CASE in place of the macro BOOST_AUTO_TEST_CASE:
BOOST_FIXTURE_TEST_CASE(test_case_name, fixure_name)
The only difference from the macro BOOST_AUTO_TEST_CASE is the presence of an extra argument
- fixture name. Unlike the pure C++ solution you have direct access to the public and protected members of the
fixture, though you still need to refer to the fixture name in every test case.
![]() |
Note |
|---|---|
You can't access private members of fixture, but then why would you make anything private? |
Example 23. Per test case fixture
In this example only test_case1 and test_case2 have fixture F assigned. In the next section you going to see what can be done if all test cases in a test suite require the same fixture.
#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_CASE( test_case1, F )
{
BOOST_CHECK( i == 1 );
++i;
}
BOOST_FIXTURE_TEST_CASE( test_case2, F )
{
BOOST_CHECK_EQUAL( i, 1 );
}
BOOST_AUTO_TEST_CASE( test_case3 )
{
BOOST_CHECK( true );
}
Source code |
| | Show output |
> example --log_level=message Running 3 test cases... setup fixture test.cpp(13): error in "test_case1": check i == 1 failed teardown fixture setup fixture test.cpp(19): error in "test_case2": check i == 1 failed [0 != 1] teardown fixture *** 2 failures detected in test suite "example"