多数のプロジェクトを実行する CruiseControl ビルド サーバーがあります。そのうちの 1 つで、2 つのテスト スイートのうちの 1 つだけがビルド レポートに存在することに最近気付きました (ただし、もう 1 つのテスト スイートで失敗すると、ビルドは失敗します)。
さらに調査した結果、ant の xmlformatter によって生成された JUnit の XML 出力ファイル (CruiseControl が解析してビルド レポートを生成する) には、テスト ケースのシステム アウトを含む CDATA セクション内に、ASCII コード 7 (BELL) 文字のインスタンスが時折含まれていることがわかりました。Cruiscontrol は明らかにこれを処理できず、xmllint もこれらの文字が CDATA セクション内で不正であると見なします。
残念ながら、これらの文字を書くものは見つかりません。それらはログ出力の特定の行の先頭に表示されますが、常にではありません (ただし、ログ コードは常に同じ文字列リテラルを出力します)。
また、テスト ケースが標準出力に何を書き込んでも、xmlformatter は有効な XML を生成するべきではないでしょうか?
誰かが同様の問題を抱えていましたか?
これは、XML ログファイルの関連セクションがどのように見えるかです (これは企業アプリであるため匿名化されています)。
<testcase classname="Testclass" name="testMethod" time="0.0020"></testcase>
<system-out><![CDATA[15.10.09 16:49:41.161 (MainUIClass): Starte UI initialize
...
^G15.10.09 16:49:58.881 (SubUiClass): Starte UI initialize
15.10.09 16:49:58.881 (SubUiClass): UI initialize beendet
^G15.10.09 16:49:59.264 (SubUiClass): Starte UI initialize
15.10.09 16:49:59.264 (SubUiClass): UI initialize beendet
これは、そのログ出力を生成するコードです。
SystemProperties.getLogger().logInfo(getClass(), "Starte UI initialize");
...
SystemProperties.getLogger().logInfo(getClass(), "UI initialize beendet");