我已将CppUnit
和boost::test
用于C ++单元测试。通常我更喜欢boost::test
,主要是因为自动测试宏可以最大限度地减少设置测试的工作量。但是我从CppUnit
中错过了一件事:能够注册自己的“保护者”,其实例会自动包装所有的运行测试。 (从技术上讲,您安装了一个测试“监听器”,并且可以将每个测试包装在一个保护器范围内)。
我发现过去这些因为意外的副作用而监视单元测试是非常宝贵的(例如检查代码没有改变浮点单元状态标志)。我在boost::test
documentation中看不到任何等效内容,但BOOST_FIXTURE_TEST_CASE
可能最接近。
关于如何在boost::test
中最好地实现与CppUnit保护器相同的任何建议?
(我还没有真正研究boost::test
的实现,但如果它与CppUnit
类似,那么它必须使用非常类似于保护器的东西。)
答案 0 :(得分:2)
我从未使用过CppUnit,因此不确定保护器是如何工作的。你在寻找包装个别测试或整个测试套件的东西吗?
对于前者,你可以像你提到的那样使用灯具,但据我所知,灯具应被视为“在测试之外”。他们设置了测试需要的任何东西,并在之后清理它。任何实际的错误测试都应该在测试中,但可以使用RAII轻松实现。只需定义一个类,它在析构函数中检查您需要的任何内容,然后在测试开始时创建它的本地实例。由于它是先构造的,因此最后会被破坏,因此可以很容易地检查测试是否没有修改任何意外状态。
如果您希望在 all 执行完测试后检查此内容,您可能需要global fixtures