在 运行 之后从 Google 测试中获取错误消息
Get error message from a Google Test after running it
我正在为 Google 测试框架实现自定义运行器,它单独运行一个具体的 TestInfo
并检查其状态:
TestInfo* info = ...;
testing::GTEST_FLAG(filter) = std::string(info->test_case_name()) + "." + info->name();
RUN_ALL_TESTS();
std::cout << (info->result()->Passed() ? "Success :)" : "Error :(") << std::endl;
此处 testInfo->result()
具有类型 TestResult
,它具有提供有关测试是通过还是失败的信息的方法,失败是否严重,以及可以由用户设置的属性。
但是 google 测试也可以有失败消息,i。 e. FAIL() << "Division by zero";
。
有什么方法可以从 Google 测试 api 中检索此失败消息?
刚刚下载了 GitHub googletest 的 repo 并查看了代码。似乎您的 FAIL()
消息可以通过下一个代码检索(没有任何 gtest 项目来测试代码的正确性):
for (auto const & pr:
testing::internal::TestResultAccessor::test_part_results(*info->result()))
if (pr.fatally_failed())
std::cout << "FAIL(): " << pr.message() << std::endl;
如果我错了,请纠正我,我会更新我的答案。
更新。查看代码后发现不那么骇人听闻的方式(不使用 ::internal
),也没有经过测试:
for (int i = 0; i < info->result()->total_part_count(); ++i) {
auto const & pr = info->result()->GetTestPartResult(i);
if (pr.fatally_failed())
std::cout << "FAIL(): " << pr.message() << std::endl;
}
我正在为 Google 测试框架实现自定义运行器,它单独运行一个具体的 TestInfo
并检查其状态:
TestInfo* info = ...;
testing::GTEST_FLAG(filter) = std::string(info->test_case_name()) + "." + info->name();
RUN_ALL_TESTS();
std::cout << (info->result()->Passed() ? "Success :)" : "Error :(") << std::endl;
此处 testInfo->result()
具有类型 TestResult
,它具有提供有关测试是通过还是失败的信息的方法,失败是否严重,以及可以由用户设置的属性。
但是 google 测试也可以有失败消息,i。 e. FAIL() << "Division by zero";
。
有什么方法可以从 Google 测试 api 中检索此失败消息?
刚刚下载了 GitHub googletest 的 repo 并查看了代码。似乎您的 FAIL()
消息可以通过下一个代码检索(没有任何 gtest 项目来测试代码的正确性):
for (auto const & pr:
testing::internal::TestResultAccessor::test_part_results(*info->result()))
if (pr.fatally_failed())
std::cout << "FAIL(): " << pr.message() << std::endl;
如果我错了,请纠正我,我会更新我的答案。
更新。查看代码后发现不那么骇人听闻的方式(不使用 ::internal
),也没有经过测试:
for (int i = 0; i < info->result()->total_part_count(); ++i) {
auto const & pr = info->result()->GetTestPartResult(i);
if (pr.fatally_failed())
std::cout << "FAIL(): " << pr.message() << std::endl;
}