我有一个需要辅助功能的BOOST_AUTO_TEST_CASE
。我可以把它变成一个常规函数并从内部调用它;但我宁愿以某种方式将它保持在BOOST_AUTO_CASE
的范围内。我还希望能够声明在测试用例和辅助函数范围内的变量(例如const int serverCount = 10;
)。
如果测试用例是一个类(而不是宏),我只需使用私有成员函数。我如何为Boost单元测试用例做这个(或等效的)?
答案 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有效,链接已更新。