static boost.test库和动态boost.test库

时间:2014-02-11 16:20:17

标签: c++ unit-testing boost

我有一个与BOOST.Test框架相关的问题,并通过以下示例来说明我的问题: 我构建了一个包含所有测试类的TestClass库,该库可以是静态的也可以是动态的。该库中的一个典型功能如下:

__declspec(dllexport) HelloWorld()
{

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

然后,我设置了一个可执行程序(例如main.cpp),它将调用这个库:

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

    return 0; 
} 

对于TestClass库和可执行程序,它们都需要BOOST.Test库。我构建的这个BOOST.Test库是静态的。然后我发现:

  • 如果TestClass库是静态的,那么一切都很顺利。

  • 但是,如果TestClass库是动态的,那么我收到以下错误:

    未知位置(0):“HelloWorld”中的致命错误:std :: runtime_error:不能我们 初始化框架之前的测试工具 有任何想法吗?感谢

1 个答案:

答案 0 :(得分:2)

确保定义BOOST_TEST_DYN_LINK:

  

如果您选择将测试模块与预建的动态库链接,   此用法称为UTF的动态库变体。这个   变体要求您在其中定义标记 BOOST_TEST_DYN_LINK   一个makefile或在标题 boost / test / unit_test.hpp 之前包含。   
The dynamic library variant of the UTF

#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>