【发布时间】:2021-08-24 00:07:02
【问题描述】:
我正在 Linux 和 GCC10 上尝试 Google 测试框架。
基本测试工作正常,但是我没有得到关于死亡测试的一些东西。像EXPECT_DEBUG_DEATH 这样的死亡测试宏有第二个参数(“matcher”),它应该是一个正则表达式字符串,在测试结束之前与打印到stderr 的内容进行比较。
TEST(MyDeathTests, MyDeathTest)
{
EXPECT_DEBUG_DEATH({ assert(false); }, "");
EXPECT_DEBUG_DEATH({ fprintf(stderr, "Bye\n"); fflush(stderr); exit(1); }, "");
EXPECT_DEBUG_DEATH({ std::cerr << "Darn" << std::endl << std::flush; std::abort(); }, "");
}
正确检测到死亡。但是,只有在使用空匹配器字符串时测试才会成功,正如您在上面的 sn-p 中看到的那样。测试输出中的“Actual msg”始终为空。我尝试了一些带有exit()、stdout、stderr 和 C 输出函数的变体,但没有任何效果。
任何想法为什么没有收到死亡消息?
【问题讨论】:
-
给定的用例没有使用
LOG(DFATAL) << "Bye";或LOG(DFATAL) << "Darn";。
标签: c++ googletest stderr