Eclipse CDT の単純な単体テストで std::cout を使用すると、「XML parse error: Content is not allowed in prolog.」というエラー メッセージが表示されます。
ただし、「cout」メッセージのある行を削除すると、テストは正しく実行されます。端末に出力しているデバッグ メッセージが単体テストの出力に干渉しているようで、Eclipse の [C/C++ Unit Test] ウィンドウが単体テストの出力を解析できないようです。
私の質問は、コードに cout デバッグ メッセージが含まれている場合、Eclipse の CDT で単体テスト サポートを使用するにはどうすればよいですか? 単体テストの出力を別の場所 (一時ファイルなど) に送信して、端末に出力される cout/debug/log メッセージとは別にすることはできますか?
編集:たとえば、http://www.boost.org/doc/libs/1_42_0/libs/test/doc/html/utf/user-guide/fixture/global.htmlで例 25 を使用すると:
#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>
#include <iostream>
//____________________________________________________________________________//
struct MyConfig {
MyConfig() { std::cout << "global setup\n"; }
~MyConfig() { std::cout << "global teardown\n"; }
};
//____________________________________________________________________________//
BOOST_GLOBAL_FIXTURE( MyConfig );
BOOST_AUTO_TEST_CASE( test_case )
{
BOOST_CHECK( true );
}
//____________________________________________________________________________//
次に、「XML parse error: Content is not allowed in prolog.」というエラーが表示されます。エクリプスで。これは、Eclipse Unit Test ツールが「global setup」を含む出力を解析できないことが原因のようです。問題は、Eclipse の単体テスト ツールでメッセージを解析して単体テストの結果を表示しながら、出力されたデバッグ メッセージでこの例を使用し続けるにはどうすればよいかということです。