c++ - boost 测试不 init_unit_test_suite

标签 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_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;

}

但是在运行时它说

Test setup error: test tree is empty

为什么不运行 init_unit_test_suite 函数?

最佳答案

您是否真的动态链接到 boost_unit_test 框架库?此外,手动测试注册和 BOOST_TEST_MAIN 定义的组合不起作用。动态库需要稍微不同的初始化例程。

避免此障碍的最简单方法是使用 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()

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

关于c++ - boost 测试不 init_unit_test_suite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17024143/

相关文章:

c++ - C/C++ : How can I know the size of used flash memory?

c++ - 虹吸管为 iOS 模拟器构建,但为设备构建获取链接器错误

c++ - 为什么用户定义的移动构造函数会禁用隐式复制构造函数?

c++ - 如何继承类型列表,然后调用继承成员列表中的成员?

c++ - 使用 Dev-C++ 编译时出错

sql - 如何根据不同的标准对组进行分割

java - 如何检查内存泄漏?

go - 在 Go 中使用测试依赖项但防止导出它们的最佳方法

c++ - 在 C++ 中计算滚动/移动平均值

c++ - 这是清理内存的良好编程习惯吗?