googletest C++テストフレームワーク を使用しています。通常、テスト実行のテキスト出力は次のようになります。
[RUN] MyTest.Fuzz [OK] MyTest.Fuzz(1867 ms)
同じ形式でいくつかの追加データを出力したい、例えば:
[RUN] MyTest.Fuzz [] random seed = 1319760587 [OK] MyTest.Fuzz(1867 ms)
Googletestドキュメントで Logging Additional Information を見つけましたが、標準のコンソール出力ではなく、XML出力に構造化データのみを送信しているようです。
この形式のテキストを出力する単体テスト内で呼び出すことができるgoogletest関数はありますか?手動でデータをcout
に送信することはできますが、通常の色付きの出力が含まれていないため、13個のスペースなどを印刷して明示的にインデントする必要があります。
デフォルトのテスト構成では、stderrに印刷するだけで機能します。
std::cerr << "[ ] random seed = " << random_seed << std::endl;
デフォルトのプリンターPrettyUnitTestResultPrinter
のラッパーを作成して、テストプロパティも印刷できます。 listeners.default_result_printer()
を使用してデフォルトのプリンターを取得できます(以下を参照)。 EmptyTestEventListener
を実装し、メソッドPrettyUnitTestResultPrinter::OnTestEnd()
( gtest.cc )を変更し、結果プロパティを使用する必要があります:test_info.result()->GetTestProperty(i)
XML出力用のプリンター:
String XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
const TestResult& result) {
Message attributes;
for (int i = 0; i < result.test_property_count(); ++i) {
const TestProperty& property = result.GetTestProperty(i);
attributes << " " << property.key() << "="
<< "\"" << EscapeXmlAttribute(property.value()) << "\"";
}
return attributes.GetString();
}
その後、 google test sample で行われたように、テストのデフォルトリスナーを置き換えることができます。
UnitTest& unit_test = *UnitTest::GetInstance();
if (terse_output) {
TestEventListeners& listeners = unit_test.listeners();
delete listeners.Release(listeners.default_result_printer());
listeners.Append(new TersePrinter);
}
int ret_val = RUN_ALL_TESTS();
いいえ、ヘッダーを検索しましたが、途中で独自のログを追加することはありません。要求することがあります。必要に応じて拡張タスクを記録できます http://code.google.com/p/googletest/issues/list
世話をする。
使用したところstd::cout
linuxのANSIカラーコードを使用していますが、10周年記念アップデートを獲得して以来、Windowsでコードが機能すると信じています。
std:cout << "\033[0;32m" << "[ ] " << "\033[0;0m"
<< "random seed = " << random_seed << lend;
または、ヘッダーファイルといくつかの#define
ステートメントをテストに含めます。また、テキストをもう少し目立つように書式設定することも好きです。
#define ANSI_TXT_GRN "\033[0;32m"
#define ANSI_TXT_MGT "\033[0;35m" //Magenta
#define ANSI_TXT_DFT "\033[0;0m" //Console default
#define GTEST_BOX "[ cout ] "
#define COUT_GTEST ANSI_TXT_GRN << GTEST_BOX //You could add the Default
#define COUT_GTEST_MGT COUT_GTEST << ANSI_TXT_MGT
だから私のコードは次のようになります:
cout << COUT_GTEST_MGT << "random seed = " << random_seed << ANSI_TXT_DFT << endl;