我有一个 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/