gpt4 book ai didi

c++ - boost 单元测试 : adding a helper method or private function

转载 作者:太空狗 更新时间:2023-10-29 20:57:30 24 4
gpt4 key购买 nike

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

如果测试用例是一个类(而不是宏),我会简单地使用私有(private)成员函数。我如何为 Boost 单元测试用例执行此操作(或等效操作)?

最佳答案

幸运的是,在 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 仍然有效,链接已更新。

关于c++ - boost 单元测试 : adding a helper method or private function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30496087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com