用于boost :: test的CppUnit保护器的等价物?

时间:2009-04-22 22:44:59

标签: 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类似,那么它必须使用非常类似于保护器的东西。)

1 个答案:

答案 0 :(得分:2)

我从未使用过CppUnit,因此不确定保护器是如何工作的。你在寻找包装个别测试或整个测试套件的东西吗?

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

如果您希望在 all 执行完测试后检查此内容,您可能需要global fixtures