그래서 메시지를 cout
및 cerr
에 인쇄하는 클래스가 있습니다. 슬프게도, 로깅을 사용하도록 리팩토링하는 것은 문제가되지 않습니다. 내 테스트에서는 described in this answer처럼 cout
과 cerr
을 모두 캡처하려고합니다. 테스트가 성공할 경우, 실제로 인쇄되는 것을 신경 쓰지 않습니다. 그러나 테스트가 실패하면 출력을보고 싶습니다.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;
}
}
는 분명히, 나는 고정이의 설치/해체 방법을 사용할 수 있지만 여전히 오류 검사를 잃었 : 그럼, 내가 원하는 유사한 무언가이다.
매우 좋습니다! 이것은 내가 뭔가를 생각해내는 것을 허용했다. – Sardathrion
@Sardathrion 또한 다음을 참조하십시오. https://code.google.com/p/googletest/wiki/V1_6_AdvancedGuide#Defining_Event_Listeners –