gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:34 25 4
gpt4 key购买 nike

我使用了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com