Boost单元测试:添加辅助方法或私有函数

时间:2015-05-28 02:12:20

标签: c++ unit-testing boost boost-test

我有一个需要辅助功能的BOOST_AUTO_TEST_CASE。我可以把它变成一个常规函数并从内部调用它;但我宁愿以某种方式将它保持在BOOST_AUTO_CASE的范围内。我还希望能够声明在测试用例和辅助函数范围内的变量(例如const int serverCount = 10;)。

如果测试用例是一个类(而不是宏),我只需使用私有成员函数。我如何为Boost单元测试用例做这个(或等效的)?

1 个答案:

答案 0 :(得分:3)

幸运的是,在Boost测试框架中有一个解决方案:Fixtures。有不同类型的灯具,但在您的情况下,per test case fixture似乎适合。

#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>

struct TestContext {
    TestContext() : testVar( 0 ) { BOOST_TEST_MESSAGE( "setup fixture" ); }
    ~TestContext()               { BOOST_TEST_MESSAGE( "teardown fixture" ); }

    int testVar;

    void helperMethod(int x, double y)
    {
        testVar = x * (int)y;
    }
};

BOOST_FIXTURE_TEST_CASE( test_case1, TestContext )
{
    BOOST_CHECK( testVar == 1 );
    ++testVar;
}

BOOST_FIXTURE_TEST_CASE( test_case2, TestContext )
{
    helperMethod(2, 3.1);
    // ...
}

testVar可以在测试用例以及TestContext类/结构中访问。 TestContext的构造函数和析构函数分别在每个测试用例之前和之后调用。它们不是必需的,但如果你必须管理内存就可以派上用场。特别是每个测试用例都使用自己的新TestContext实例运行。

更新:仍然对Boost 1.66有效,链接已更新。