2

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

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

关于如何最好地实现与 CppUnit 的保护器相同的事情的任何建议boost::test

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

4

1 回答 1

2

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

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

如果您希望它在所有测试执行后检查这一点,您可能需要全局固定装置

于 2009-04-22T23:00:45.013 回答