首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个套件的boost-test初始化(不是case)

每个套件的boost-test初始化(不是case)
EN

Stack Overflow用户
提问于 2011-12-15 03:10:03
回答 4查看 3.7K关注 0票数 5

我需要初始化一些变量,这些变量在BOOST_AUTO_TEST_SUITE中是“全局的”,因此它们的构造函数将在套件启动时被调用,而它们的析构函数将在最后一个相应的BOOST_AUTO_TEST_CASE完成后立即被调用

有人知道我怎么做吗?看起来全局装置不是解决方案..。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-01 12:04:51

供将来参考:

This has been added to the library,我相信是从1.36.

票数 1
EN

Stack Overflow用户

发布于 2015-01-09 18:19:50

我不太确定被接受的答案是否正确,因为如果我使用test code from the boost web site

代码语言:javascript
复制
#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>

struct F {
    F() : i( 0 ) { BOOST_TEST_MESSAGE( "setup fixture" ); }
    ~F()         { BOOST_TEST_MESSAGE( "teardown fixture" ); }

    int i;
};

//____________________________________________________________________________//

BOOST_FIXTURE_TEST_SUITE( s, F )

BOOST_AUTO_TEST_CASE( test_case1 )
{
    BOOST_CHECK( i == 1 );
}

//____________________________________________________________________________//

BOOST_AUTO_TEST_CASE( test_case2 )
{
    BOOST_CHECK_EQUAL( i, 0 );
}

//____________________________________________________________________________//

BOOST_AUTO_TEST_SUITE_END()      

那么预期的调用序列应该是:

代码语言:javascript
复制
setup fixture
test_case1
test_case2
teardown fixture

但实际上是这样的:

代码语言:javascript
复制
setup fixture
test_case1
teardown fixture
setup fixture
test_case2
teardown fixture

我不知道这是不是一个bug,因为从阅读BOOST_FIXTURE_TEST_SUITE文档来看,我完全可以预料到第一种行为。如果我使用BOOST_FIXTURE_TEST_CASE,我也可以得到第二种行为。

票数 7
EN

Stack Overflow用户

发布于 2018-01-13 00:29:42

您可以使用全局fixture:http://www.boost.org/doc/libs/1_66_0/libs/test/doc/html/boost_test/tests_organization/fixtures/global.html

只需替换

代码语言:javascript
复制
BOOST_FIXTURE_TEST_SUITE( s, F )
BOOST_AUTO_TEST_CASE( test_case1 )
[...]
BOOST_AUTO_TEST_SUITE_END()

使用

代码语言:javascript
复制
BOOST_TEST_GLOBAL_FIXTURE( F );
BOOST_AUTO_TEST_CASE( test_case1 )
[...]

然后它就会像你所期望的那样工作。

-- sym39

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8510256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档