Boost test does not init_unit_test_suite

▼魔方 西西 提交于 2019-12-05 02:32:37

Did you actually dynamically link against the boost_unit_test framework library? Furthermore, the combination of manual test registration and the definition of BOOST_TEST_MAIN does not work. The dynamic library requires slightly different initialization routines.

The easiest way to avoid this hurdle is to use automatic test registration

#define BOOST_TEST_MAIN
#define BOOST_TEST_DYN_LINK

#include <boost/test/unit_test.hpp>
#include <boost/test/unit_test_log.hpp>
#include <boost/filesystem/fstream.hpp>

#include <iostream>

using namespace boost::unit_test;
using namespace std;

BOOST_AUTO_TEST_SUITE(MasterSuite)

BOOST_AUTO_TEST_CASE(TestFoo)
{
    BOOST_CHECK(0==0);
}

BOOST_AUTO_TEST_SUITE_END()

This is more robust and scales much better when you add more and more tests.

Sebastian Dressler

I had exactly the same issue. Besides switching to automatic test registration, as suggested previously, you can also use static linking, i.e. by replacing

#define BOOST_TEST_DYN_LINK

with

#define BOOST_TEST_STATIC_LINK

This was suggested at the boost mailing list:

The easiest way to fix this is to [...] link with static library.

Dynamic library init API is slightly different since 1.34.1 and this is the cause of the error you see. init_unit_test_suite function is not called in this case.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!