加速测试不init_unit_test_suite [英] Boost test does not init_unit_test_suite
问题描述
我运行这片code的
的#define BOOST_TEST_MAIN
#定义BOOST_TEST_DYN_LINK#包括LT&;升压/测试/ unit_test.hpp>
#包括LT&;升压/测试/ unit_test_log.hpp>
#包括LT&;升压/文件系统/ fstream.hpp>#包括LT&;&iostream的GT;使用空间boost :: unit_test;
使用命名空间std;
无效命名为testFoo()
{
BOOST_CHECK(0 == 0);
}test_suite * init_unit_test_suite(INT ARGC,CHAR *的argv [])
{
性病::法院LT&;< 输入init_unit_test_suite<< ENDL;
提高:: unit_test :: test_suite * master_test_suite =
BOOST_TEST_SUITE(MasterTestSuite);
master_test_suite->添加(BOOST_TEST_CASE(安培;命名为testFoo));
返回master_test_suite;}
但在运行时它说:
测试设置错误:测试树是空的。
块引用>
块引用>为什么它不能运行init_unit_test_suite功能?
解决方案你真的动态对boost_unit_test框架库链接?此外,人工考试报名的组合和
BOOST_TEST_MAIN定义
不起作用。动态库需要稍微不同的初始化程序。要避免这一障碍的最简单的方法是使用<一个href=\"http://www.boost.org/doc/libs/1_53_0/libs/test/doc/html/utf/user-guide/test-organization/auto-test-suite.html\"相对=nofollow>自动测试报名
的#define BOOST_TEST_MAIN
#定义BOOST_TEST_DYN_LINK#包括LT&;升压/测试/ unit_test.hpp&GT;
#包括LT&;升压/测试/ unit_test_log.hpp&GT;
#包括LT&;升压/文件系统/ fstream.hpp&GT;#包括LT&;&iostream的GT;使用空间boost :: unit_test;
使用命名空间std;BOOST_AUTO_TEST_SUITE(的MASTERSuite)BOOST_AUTO_TEST_CASE(命名为testFoo)
{
BOOST_CHECK(0 == 0);
}BOOST_AUTO_TEST_SUITE_END()这是更强大,当你添加更多的测试扩展好多了。
I run this piece of code
#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; }
But at runtime it says
Test setup error: test tree is empty
Why does it not run the init_unit_test_suite function?
解决方案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.
这篇关于加速测试不init_unit_test_suite的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!