我有一个CruiseControl构建服务器运行大量项目。在其中一个测试套件中,我最近注意到在构建报告中只存在两个测试套件中的一个(但另一个测试套件中的失败仍然会导致构建失败)。
进一步的调查显示,由Ant的xmlFormatter(CruiseControl解析以生成构建报告)生成的JUnit的XML输出文件包含
ASCII代码7(贝尔)字符的偶尔实例
在包含测试用例外的系统的CDATA部分中。CruiseControl显然无法处理此问题,而且xmllint还认为这些字符在CDATA节中是非法的。
不幸的是,我找不到任何可以写入这些字符的内容;它们出现在日志输出的特定行的开头,但并不总是如此(尽管日志代码总是打印相同的字符串文字)。
而且,不管测试用例向其标准输出写入什么内容,XML格式化程序都不应该生成有效的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");