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

发布于 2024-11-19 13:59:58 字数 365 浏览 4 评论 0原文

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

但是,我想知道是否有一种方法可以抑制因断言失败而导致的运行时错误。此时,每个失败的断言都会创建一个弹出窗口,每次运行测试时我都必须将其关闭。随着我的项目的发展,这种行为越来越以一种不可接受的方式干扰工作流程,我倾向于不再测试assert()断言。 我知道一般来说有可能禁用断言,但从测试框架内部抑制操作系统生成的警告似乎更方便。

I am using google test in a C++ project. Some functions use assert() in order to check for invalid input parameters. I already read about Death-Tests (What are Google Test, Death Tests) and started using them in my test cases.

However, I wonder if there is a way to suppress the runtime errors caused by failing assertions. At this time each failing assertion creates a pop-up window I have to close everytime I run the tests. As my project grows, this behaviour increasingly disturbs the workflow in an unacceptable way and I tend to not test assert()-assertions any longer.
I know there are possibilities to disable assertions in general, but it seems more convenient to suppress the OS-generated warnings from inside the testing framework.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人│生佛魔见 2024-11-26 13:59:58

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

::testing::FLAGS_gtest_death_test_style = "threadsafe";

您可以对测试二进制文件中的所有测试执行此操作,也可以仅对受影响的测试执行此操作。后者更快。我从更新的常见问题解答中得到了这个:Googletest 高级指南

Ok, I found the solution myself: You have to select the test-style threadsafe. Just add the following line to your test code:

::testing::FLAGS_gtest_death_test_style = "threadsafe";

You can either do this for all tests in the test-binary or for affected tests only. The latter is faster. I got this from the updated FAQ: Googletest AdvancedGuide

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文