gpt4 book ai didi

c++ - 在 Google Test 中打印 exception.what()

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:27 24 4
gpt4 key购买 nike

我的一些代码抛出使用

if (failure)
throw std::runtime_error("a bad thing happened: ...");

我正在使用 Google Test 和 TeamCity 自动执行我的测试。它在 Windows 上运行,所以我使用 --gtest_catch_exceptions 参数在发生意外异常时将测试报告为失败。但是,Google Test 只是简单地使测试失败,并显示一条类似

的消息
Exception thrown with code 0xe06d7363 in the test body.
in (null) line -1

这不是很有帮助。我宁愿有这样的消息

Exception thrown: "a bad thing happened: ..."

我有一个实现该方法的自定义 TestListener

OnTestPartResult( const ::testing::TestPartResult& test_part_result)

但似乎没有提及 Google Test 捕获的异常。有没有其他方法可以将异常报告给 std::cout 或其他地方?

请注意我不能使用

try
{
return RUN_ALL_TESTS();
}
catch (std::exception& e)
{
std::cout << "EXCEPTION: " << e.what();
return -1;
}
catch (...)
{
return -1;
}

没有 --gtest_catch_exceptions,因为测试执行会在第一个异常时被“取消”。

我也不想更改 throw 代码。

感谢任何想法!

最佳答案

我正在使用 gmock-1.7.0 提供的 gtest。这是我在 gmock-1.7.0 目录中所做的:

diff --git a/gtest/include/gtest/internal/gtest-internal.h b/gtest/include/gtest/internal/gtest-internal.h
index 0dcc3a3..265093b 100644
--- a/gtest/include/gtest/internal/gtest-internal.h
+++ b/gtest/include/gtest/internal/gtest-internal.h
@@ -1075,7 +1075,8 @@ class NativeArray {
try { \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
} \
- catch (...) { \
+ catch (std::exception *e ) { \
+ std::cout << e->what() << std::endl; \
goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
} \
} else \

在英语中,我明确捕获了 std::exception 而不是 ..(我抛出的所有内容都是从它派生的),并添加了 e->what()

的回显

希望这对您有所帮助。

关于c++ - 在 Google Test 中打印 exception.what(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4655439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com