我有一个与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:不能我们 初始化框架之前的测试工具 有任何想法吗?感谢
答案 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>