c++ - 相当于 boost::test 的 CppUnit 保护器?

标签 c++ unit-testing boost cppunit boost-test

我使用了 CppUnitboost::test 进行 C++ 单元测试。一般来说,我更喜欢 boost::test,主要是因为自动测试宏最大限度地减少了设置测试的工作量。但是 CppUnit 中有一件事我真的很怀念:注册您自己的“保护器”的能力,它的实例会自动包装所有运行的测试。 (从技术上讲,您安装了一个测试“监听器”,它可以将每个测试包装在一个保护范围内)。

我发现这些在过去用于监视单元测试以防止意外副作用(例如检查代码没有更改浮点单元状态标志)非常宝贵。我在 boost::test documentation 中看不到任何等效项, 尽管 BOOST_FIXTURE_TEST_CASE也许最接近。

对于如何最好地实现与 boost::test 中的 CppUnit 保护器相同的事情有什么建议吗?

(我还没有真正研究过 boost::test 的实现,但如果它类似于 CppUnit,它必须使用非常类似于保护器本身的东西)。

最佳答案

我从未使用过 CppUnit,所以不确定保护器是如何工作的。您是在寻找包装单个测试还是整个测试套件的东西?

对于前者,您可以像您提到的那样使用固定装置,但据我了解,固定装置应被视为“测试之外”。他们设置测试需要的任何内容,然后进行清理。任何实际的错误测试都应该在测试本身中进行,但可以使用 RAII 轻松实现。只需定义一个类,在其析构函数中检查您需要的任何内容,然后在测试开始时创建它的本地实例。由于它首先构建,最后被破坏,因此它可以轻松检查测试是否未修改任何意外状态。

如果你想让它在所有 测试执行后检查它,你可能需要 global fixtures

关于c++ - 相当于 boost::test 的 CppUnit 保护器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/779580/

相关文章:

c# - 从父类ctor调用重写的方法

c++ - boost单元测试框架中的日志级别

javascript - 使用 javascript 的 Mocha 和 Sinon 单元测试问题

C++ 从相对路径获取模型/资源的绝对路径

c++ - 将类模板参数值之一指定为任意

c# - 如何处理来自 C# 的非托管 Win32 异常

C++函数调用顺序(boost)——困惑

c++ - boost::process 如何正确读取进程 std::cout 和 std::cerr 并保持顺序

c++ - Clang,在源代码端检测 -mavx 编译器参数

unit-testing - Grails 单元测试服务 MissingProperty 'log'