Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

static boost.test library and dynamic boost.test library

I have a question related to BOOST.Test framework, and take the following example to illustrate my problem: I build a TestClass library that incorporates all the test classes, and the library can be either static or dynamic. One typical function in this library is as follows:

__declspec(dllexport) HelloWorld()
{

        int i= 2;
        int j= 1;
            BOOST_CHECK(i == j);
        BOOST_CHECK_EQUAL(i,j);
}

Then, I set up an executable program (main.cpp for example) that will invoke this library:

test_suite* init_unit_test_suite( int argc, char* argv[] ) 
{ 
    framework::master_test_suite().add( BOOST_TEST_CASE( &HelloWorld ) ); 

    return 0; 
} 

For both the TestClass library and the executable program, they need BOOST.Test library. This BOOST.Test library I built is static. Then I found:

  • If the TestClass library is static, then everything goes on well.

  • However, if the TestClass library is dynamic, then I received the following errors:

    unknown location(0): fatal error in "HelloWorld": std::runtime_error: can't us e testing tools before framework is initialized Any ideas? Thanks

like image 713
feelfree Avatar asked Jun 17 '26 21:06

feelfree


1 Answers

Make sure you define the BOOST_TEST_DYN_LINK:

If you opt to link a test module with the prebuilt dynamic library, this usage is called the dynamic library variant of the UTF. This variant requires you to define the flag BOOST_TEST_DYN_LINK either in a makefile or before the header boost/test/unit_test.hpp inclusion.
The dynamic library variant of the UTF

#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
like image 183
mockinterface Avatar answered Jun 20 '26 09:06

mockinterface