現在のバージョンの gtest では、これをきれいに行う方法はありません。コードを確認したところ、テストに失敗した場合は、テキスト出力 (gtest の "Messages" でラップ) のみが表示されます。
ただし、ある時点で、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()