所以,我有一个类打印消息cout
和cerr
。可悲的是,重构它以使用日志记录是不可能的。在我的测试中,我想同时捕获cout
和cerr
,就像它是described in this answer一样。如果测试成功,我真的不在乎打印什么。但是,如果测试失败,我希望看到输出。所以,我要的是一个类似于:Gtest:捕获输出,但打印失败
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;
}
}
显然,我可以用一个夹具并为此设置/ TearDown中的方法,但我仍然失踪的故障检查。
非常好!这让我想出了一些东西。 – Sardathrion 2014-12-03 15:02:00
@Sardathrion也看看这个:https://code.google.com/p/googletest/wiki/V1_6_AdvancedGuide#Defining_Event_Listeners – 2014-12-03 15:04:11