SRo*_*mes 4 c++ boost unit-testing boost-test
我有一个BOOST_AUTO_TEST_CASE
需要帮助功能的工具。我可以将其设为常规函数并从内部调用它;但是我宁愿以某种方式使其在范围内保持本地和私有BOOST_AUTO_CASE
。我还希望能够声明属于测试用例和辅助函数(例如const int serverCount = 10;
)范围内的var 。
如果测试用例是一个类(而不是宏),我将只使用一个私有成员函数。如何对Boost单元测试用例进行此操作(或等效操作)?
幸运的是,Boost测试框架中有一项针对此权利的解决方案:夹具。固定装置的类型不同,但在您的情况下,每个测试用例的固定装置似乎都合适。
#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);
// ...
}
Run Code Online (Sandbox Code Playgroud)
testVar
在测试用例以及TestContext
类/结构中都可以访问。TestContext
的构造函数和析构函数分别在每个测试用例之前和之后调用。它们不是必需的,但是例如在您必须管理内存时可以派上用场。特别是,每个测试用例都以其自己的新鲜实例运行TestContext
。
更新:对Boost 1.66仍然有效,链接已更新。