如何抑制运行时错误引起的断言()使用谷歌测试

How to suppress runtime errors caused by assert() using google test?

本文关键字:谷歌 测试 断言 运行时错误 何抑制      更新时间:2023-10-16

我在一个c++项目中使用谷歌测试。有些函数使用assert()来检查无效的输入参数。我已经阅读了死亡测试(什么是谷歌测试,死亡测试),并开始在我的测试用例中使用它们。

但是,我想知道是否有一种方法可以抑制由失败的断言引起的运行时错误。此时,每个失败的断言都会创建一个弹出窗口,我必须在每次运行测试时关闭该窗口。随着项目的增长,这种行为越来越多地以一种不可接受的方式干扰工作流程,我倾向于不再测试assert()-断言。我知道在一般情况下有禁用断言的可能性,但是在测试框架内抑制os生成的警告似乎更方便。

好的,我自己找到了解决方案:您必须选择测试样式的threadsafe。只需在测试代码中添加以下行:

::testing::FLAGS_gtest_death_test_style = "threadsafe";

您可以对test-binary中的所有测试执行此操作,也可以仅对受影响的测试执行此操作。后者更快。我从更新后的FAQ: Googletest AdvancedGuide