How to capture stdout/stderr with googletest?

Jan Rüegg picture Jan Rüegg · Sep 27, 2010 · Viewed 40.1k times · Source

Is it possible to capture the stdout and stderr when using the googletest framework?

For example, I would like to call a function that writes errors to the console (stderr). Now, when calling the function in the tests, I want to assert that no output appears there.

Or, maybe I want to test the error behaviour and want to assert that a certain string gets printed when I (deliberately) produce an error.

Answer

Heinzi picture Heinzi · Oct 17, 2015

Googletest offers functions for this:

testing::internal::CaptureStdout();
std::cout << "My test";
std::string output = testing::internal::GetCapturedStdout();