在当前版本的 gtest 中没有办法干净地做到这一点。我查看了代码,如果您未通过测试,则会显示唯一的文本输出(包含在 gtest“消息”中) 。
但是,在某些时候,gtest 开始printf
显示在屏幕上,您可以利用上面的级别来获得与平台无关的颜色。
这是一个被黑的宏来做你想做的事。这使用 gtest 内部文本着色。当然,internal::
命名空间应该敲响警钟,但是,嘿,它有效。
用法:
TEST(pa_acq,Foo)
{
// C style
PRINTF("Hello world \n");
// or C++ style
TEST_COUT << "Hello world" << std::endl;
}
输出:
代码:
namespace testing
{
namespace internal
{
enum GTestColor {
COLOR_DEFAULT,
COLOR_RED,
COLOR_GREEN,
COLOR_YELLOW
};
extern void ColoredPrintf(GTestColor color, const char* fmt, ...);
}
}
#define PRINTF(...) do { testing::internal::ColoredPrintf(testing::internal::COLOR_GREEN, "[ ] "); testing::internal::ColoredPrintf(testing::internal::COLOR_YELLOW, __VA_ARGS__); } while(0)
// C++ stream interface
class TestCout : public std::stringstream
{
public:
~TestCout()
{
PRINTF("%s",str().c_str());
}
};
#define TEST_COUT TestCout()