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

Boost unit test: adding a helper method or private function

本文关键字:函数 方法 单元测试 添加 Boost      更新时间:2023-10-16

我有一个需要辅助函数的BOOST_AUTO_TEST_CASE。我可以把它变成一个普通的函数然后从内部调用它;但我宁愿把它保留在BOOST_AUTO_CASE的范围内。我还希望能够声明在测试用例和辅助函数(例如const int serverCount = 10;)范围内的变量。

如果测试用例是一个类(而不是一个宏),我将简单地使用一个私有成员函数。对于Boost单元测试用例,我如何做到这一点(或类似的事情)?

幸运的是,在Boost测试框架中有一个解决方案: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仍然有效,链接更新