【发布时间】:2015-02-01 03:44:52
【问题描述】:
所以,我有一个向cout 和cerr 打印消息的类。可悲的是,重构它以使用日志记录是不可能的。在我的测试中,我想同时捕获cout 和cerr,就像described in this answer 一样。如果测试成功,我真的不在乎打印什么。但是,如果测试失败,我想看看输出。所以,我想要的是类似于:
TEST(ook, eek)
{
// Capture cout.
std::stringstream buffer;
std::streambuf *sbuf = std::cout.rdbuf();
std::cout.rdbuf(buffer.rdbuf());
// Do test things:
auto ret = my_weird_function(some, weird, parameters);
EXPECT_TRUE(ret);
// Revert the capture.
std::cout.rdbuf(sbuf);
// Only print if things have gone wrong...
if (ERROR)
{
std::cout << buffer.str() << std::endl;
}
}
显然,我可以为此使用夹具和 SetUp/TearDown 方法,但仍然缺少故障检查。
【问题讨论】:
标签: c++ googletest