Adam Nielsen
This works fine, except that I need to create the factory class before the tests can be run. In case the factory class fails, I want to use some of the Boost.Test checks in the initialisation function.
However when I do this, I get this runtime error:
Indeed you can't access Boost.Test facilities before its own initialization is run.
terminate called after throwing an instance of 'std::runtime_error' what(): can't use testing tools before framework is initialized
I am assuming this means I need to wait with the construction of my factory class until Boost.Test is ready, but I am unsure how to do this.
One way or another you need to postpone your assertions till after Boost.Test init.
I am #defining BOOST_TEST_MODULE, and when I try to declare a function
What usage variant of boost.test you employ? static/shared/included?
called init_unit_test() as suggested in the docs it tells me the function already exists. If I remove the BOOST_TEST_MODULE #define, then it complains that main() is not implemented.
It appears you are using shared library. In this case you can define BOOST_TEST_MODULE and BOOST_TEST_NO_MAIN. In this case you can define your own main like this: int BOOST_TEST_CALL_DECL main( int argc, char* argv[] ) { // do my own init return ::boost::unit_test::unit_test_main( &init_unit_test, argc, argv ); } or you can skip BOOST_TEST_MODULE and define both main and init_test_module routines. Would you be using static lib, main will always be present, but init_unit_test will depend on BOOST_TEST_MODULE. HTH, Gennadiy