在 运行 之后从 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;
}