c++ - 每个套件的升压测试初始化​​(不是案例)

标签 c++ boost-test fixture suite

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

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

最佳答案

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

#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()      

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

setup fixture
test_case1
test_case2
teardown fixture

但实际上是这样的:

setup fixture
test_case1
teardown fixture
setup fixture
test_case2
teardown fixture

我不知道这是否是一个错误,因为通过阅读 BOOST_FIXTURE_TEST_SUITE 文档,我会准确地预料到第一个行为。如果我使用 BOOST_FIXTURE_TEST_CASE,我也可以获得第二种行为。

关于c++ - 每个套件的升压测试初始化​​(不是案例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8510256/

相关文章:

c++ - 乘以 100 万

c++ - boost::this_thread::sleep_for 的 sleep 时间比我预期的要长得多。

c++ - Boost.Test 测试静态库

c# - Fixture 是否可以创建 N 个对象的列表?

java - 如何在 FitNesse 测试用例中添加按钮?

codeception - 差分短线 fixture

c++ - 求和数字递归C++

c++ - 如何读取x86处理器中的中断标志

c++ - 将单元测试添加到遗留解决方案时出现链接错误

c++ - 我如何包装 BOOST_CHECK_CLOSE?