我运行这段代码
#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/