如何使用谷歌测试抑制由assert()引起的运行时错误?
我在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,我自己找到了解决方案:你必须选择测试风格的
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: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