gpt4 book ai didi

在代码中保留断言的 C++ 测试套件

转载 作者:太空宇宙 更新时间:2023-11-04 13:06:30 25 4
gpt4 key购买 nike

我正在尝试为我的项目设置测试,我禁用了异常并定义了我的断言以调用 std::abort。 gtest 和 Catch 都只能在一个调用 std::abort 的测试中失败,因为它会杀死整个测试套件。
我的项目编译成测试项目/可执行文件引用的 DLL。除了:

  1. 启用异常并抛出我的断言
  2. 创建自定义编译目标并执行与 1 类似的操作。
  3. 重组代码以不依赖断言失败

我还有其他选择吗?出于设计/速度方面的考虑,我宁愿不启用异常。

最佳答案

这里确实有两个问题:

1. Can I do testing without exceptions?

是的,你可以。如果 std::abort 没有给您足够的信息,您可以尝试使用 std::quick_exit

返回错误代码
2. Can I keep the test suite going after a failure?

这真的和前者没有关系。在出现错误后保持测试套件继续运行是一项技术挑战,因为程序可能会因为可怕的不可恢复的原因而无法通过测试,例如被零除或堆栈可能已被破坏。

继续运行测试套件的唯一方法是在单独的进程中运行测试。

在我的一个项目中,我在 main 中设置了 switch 标志,这会导致程序在测试模式下运行,然后指向特定的测试。然后,一个 bash 脚本会迭代 ~100 个这样的测试。

关于在代码中保留断言的 C++ 测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42048780/

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