使用 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 时,有没有办法在应用程序终止后自动继续执行所有测试?的主要内容,如果未能解决你的问题,请参考以下文章

Ext JS 存储在应缓冲数据时意外重新加载数据

在应使用条件的上下文(在 'where' 附近)中指定了非布尔类型的表达式。 关键字 'order' 附近有语法错误。

老板:再用log4j就收拾东西回家吧!

老板:再用Log4j就收拾东西回家吧!

未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。

如何在没有“A KoinContext 已启动”的情况下使用 KoinTestRule?