我有一个运行大量项目的 CruiseControl 构建服务器。在其中一个上,我最近注意到构建报告中只有两个测试套件中的一个(但另一个中的故障仍然会导致构建失败)。
进一步的调查表明,由 ant 的 xmlformatter(CruiseControl 解析以生成构建报告)生成的 JUnit 的 XML 输出文件在包含测试用例的系统输出的 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");