C++ Boost测试不初始化单元测试套件

C++ Boost测试不初始化单元测试套件,c++,testing,boost,boost-test,C++,Testing,Boost,Boost Test,我运行这段代码 #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

我运行这段代码

#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;


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

test_suite* init_unit_test_suite( int argc, char* argv[] )
{
    std::cout << "Enter init_unit_test_suite" << endl;
    boost::unit_test::test_suite* master_test_suite = 
                        BOOST_TEST_SUITE( "MasterTestSuite" );
    master_test_suite->add(BOOST_TEST_CASE(&TestFoo));
    return master_test_suite;

}
#定义BOOST_TEST_MAIN
#定义BOOST\u TEST\u DYN\u链接
#包括
#包括
#包括
#包括
使用名称空间boost::unit_test;
使用名称空间std;
void TestFoo()
{
升压检查(0==0);
}
测试套件*初始单元测试套件(int argc,char*argv[])
{

std::cout您是否实际动态链接到boost_单元测试框架库?此外,手动测试注册和定义
boost_测试主
的组合不起作用。动态库需要稍微不同的初始化例程

避免这一障碍的最简单方法是使用

#定义BOOST_TEST_MAIN
#定义BOOST\u TEST\u DYN\u链接
#包括
#包括
#包括
#包括
使用名称空间boost::unit_test;
使用名称空间std;
增压自动测试套件(MasterSuite)
BOOST\u AUTO\u TEST\u案例(TestFoo)
{
升压检查(0==0);
}
BOOST\u AUTO\u TEST\u SUITE\u END()

当您添加越来越多的测试时,这会更加健壮,扩展性也会更好。

我遇到了完全相同的问题。除了按照建议切换到,您还可以使用静态链接,即通过替换

#define BOOST_TEST_DYN_LINK

会议上提出了这一建议:

解决此问题的最简单方法是[…]链接到静态库

DynamicLibraryInitAPI与1.34.1略有不同,这是 您看到的错误的原因。在此过程中未调用init_unit_test_suite函数 案例


你能不能比“手动测试注册和BOOST_test_MAIN定义的组合不起作用”更具体一些。我也有同样的问题,但想使用手动测试注册。这可能吗?@user867377我不知道,我避免手动注册,因为这很繁琐。你可以问一个新问题。
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_STATIC_LINK