加速测试不init_unit_test_suite [英] Boost test does not init_unit_test_suite

查看:265
本文介绍了加速测试不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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆