这是防止gtest(C ++)捕获异常和分段错误的方法吗? [重复]

问题描述 投票:2回答:2

看起来像C ++的Google Test(gtest)框架,以某种方式捕获了所有失败的断言,异常和分段错误。测试被标记为失败,但是测试套件本身会恢复并运行随后的测试。

这看起来很酷,只是gtest框架打印到控制台的诊断输出非常有限。 CLion IDE将提供更多信息,包括完整的堆栈跟踪和变量。关闭gtest“崩溃恢复”机制的简单方法吗?

c++ unit-testing googletest
2个回答
3
投票

我非常确定GTest不能“捕获”分段错误-它是OS中断程序,而不是程序中断自身。

要禁用捕获失败,您可以执行以下操作(来自documentation

  • 禁用捕获异常将环境变量GTEST_CATCH_EXCEPTIONS设置为零或使用--gtest_catch_exceptions=0标志
  • 运行测试
  • 使GTest在失败时设置断点(在调试器下运行时)将环境变量GTEST_BREAK_ON_FAILURE设置为非零值,或使用--gtest_break_on_failure标志
  • 运行测试

第二个选项将在发生任何故障(不仅是逃脱的异常)时直接将您带入调试器交互模式。


2
投票

您可以使用选项--gtest_catch_exceptions=0运行测试二进制文件。这将导致测试在异常时崩溃

请勿将异常报告为测试失败。相反,允许他们使程序崩溃或引发弹出窗口(在Windows上)。

或者您可以将此环境变量GTEST_CATCH_EXCEPTIONS设置为0;

gtest docs中提到了这些功能>

© www.soinside.com 2019 - 2024. All rights reserved.