Manually registered test suites

| > The Unit Test Framework > User's guide > Test organization > Test suite > Manual registration |

###### Manually registered test suites

To create a test suite manually, employ the macro BOOST_TEST_SUITE:

    BOOST_TEST_SUITE(test_suite_name)

BOOST_TEST_SUITE creates an instance of the class boost::unit_test::test_suite and returns a pointer to the constructed instance. Alternatively you can create an instance of class boost::unit_test::test_suite yourself.

| Note
boost::unit_test::test_suite instances have to be allocated on the heap and the compiler won't allow you to create one on the stack.

Newly created test suite has to be registered in a parent one using add interface. Both test suite creation and registration is performed in the test module initialization function.

Example 15. Manually registered test suites

    #include <boost/test/included/unit_test.hpp>
    using namespace boost::unit_test;

    //____________________________________________________________________________//

    void test_case1() { /* : */ }
    void test_case2() { /* : */ }
    void test_case3() { /* : */ }
    void test_case4() { /* : */ }

    //____________________________________________________________________________//

    test_suite*
    init_unit_test_suite( int argc, char* argv[] )
    {
        test_suite* ts1 = BOOST_TEST_SUITE( "test_suite1" );
        ts1->add( BOOST_TEST_CASE( &test_case1 ) );
        ts1->add( BOOST_TEST_CASE( &test_case2 ) );

        test_suite* ts2 = BOOST_TEST_SUITE( "test_suite2" );
        ts2->add( BOOST_TEST_CASE( &test_case3 ) );
        ts2->add( BOOST_TEST_CASE( &test_case4 ) );

        framework::master_test_suite().add( ts1 );
        framework::master_test_suite().add( ts2 );

        return 0;
    }

    //____________________________________________________________________________//

`Source code` | | | `Show output`

    > example --log_level=test_suite
    Running 4 test cases...
    Entering test suite "Master Test Suite"
    Entering test suite "test_suite1"
    Entering test case "test_case1"
    Leaving test case "test_case1"
    Entering test case "test_case2"
    Leaving test case "test_case2"
    Leaving test suite "test_suite1"
    Entering test suite "test_suite2"
    Entering test case "test_case3"
    Leaving test case "test_case3"
    Entering test case "test_case4"
    Leaving test case "test_case4"
    Leaving test suite "test_suite2"
    Leaving test suite "Master Test Suite"

    *** No errors detected

This example creates a test tree, which can be represented by the following hierarchy: