Boost单元测试:添加辅助方法或私有函数
Boost unit test: adding a helper method or private function
我有一个需要辅助函数的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仍然有效,链接更新
相关文章:
- 如何在 c++ 的类中递归调用函数方法?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 在 *.cpp 文件中实现的 c++ 函数/方法永远不会内联扩展吗?
- 如果子类中没有构造函数方法,则错误"no matching function for call to 'LGame::LGame(String&)'"
- 指向类中函数方法的指针不起作用
- 如何发送通过绑定到函数/方法创建的函数对象?
- 编译错误,未创建函数/方法! 对于 brms 模型
- 对静态重载(类)函数/方法的调用是不明确的
- 复制构造函数方法的用法
- C/C++ 函数/方法与 Java 的公开
- std ::函数方法参考无法将dword投入到dword64
- 链表的析构函数方法
- 为什么在类构造函数方法中,std::string 参数在调试时显示不同的结果?
- 我的构造函数方法不接受参数(DirectX / Windows)
- 当函数/方法应该要求 * 或 &
- 带有常量构造函数参数的C++变量构造函数方法
- 使用模板递归检查函数方法是否存在
- 如何通过析构函数方法删除对象(类)
- 为什么在 Java 和 C++ 中不允许隐藏虚拟函数/方法?
- 在构造函数方法中返回一个子类