使用 ASSERT_DEATH 时,有没有办法在应用程序终止后自动继续执行所有测试?
Posted
技术标签:
【中文标题】使用 ASSERT_DEATH 时,有没有办法在应用程序终止后自动继续执行所有测试?【英文标题】:When using ASSERT_DEATH, is there a way to automatically continue the execution of all tests once the application terminates? 【发布时间】:2017-11-14 11:41:47 【问题描述】:我有一个单元测试,它以导致断言失败的方式运行代码。当断言失败时,预计应用程序完成。
为了测试这是否真的发生,我正在使用 EXPECT_DEATH,它确实有效。
-
代码执行到达断言行
断言失败
程序结束
测试通过
问题是当程序结束时,有一个窗口报告程序停止工作,我需要点击“关闭程序”才能继续测试。
我需要这个窗口根本不弹出,并且不需要按任何按钮就可以继续测试。这可能吗?
我在 MS Windows 上使用 GCC。
【问题讨论】:
这种行为是特定于平台的,你还没有说你正在使用什么平台。是窗户吗?是别的吗? How can I disable the debug assertion dialog on Windows?的可能重复 是的,它是 MS Windows :'( 我不同意这是 How can I disable the debug assertion dialog on Windows? 的副本,提出这个问题的人似乎使用的是 Visual C++ 而我使用的是 GCC。对该问题投票最多的答案并不能解决我的问题。一开始我忘了提。我已经编辑了问题。 【参考方案1】:在 Windows 中,您可以禁用 Windows 错误报告 功能,该功能会弹出不需要的窗口。坏消息是,这需要在不同的 Windows 版本中以不同的方式完成。但好消息是网络上有好人,他们已经很好地记录了它:) https://www.lifewire.com/how-do-i-disable-error-reporting-in-windows-2626074.
【讨论】:
以上是关于使用 ASSERT_DEATH 时,有没有办法在应用程序终止后自动继续执行所有测试?的主要内容,如果未能解决你的问题,请参考以下文章
在应使用条件的上下文(在 'where' 附近)中指定了非布尔类型的表达式。 关键字 'order' 附近有语法错误。
未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。