Интересно, что ничего из вышеперечисленного у меня не сработало, возможно, из-за более нового CruiseControl (2.8.4), но неважно.CruiseControl игнорирует все атрибуты «errors» и «failures», которые создаются вышеупомянутыми преобразованиями, и выполняет собственные запросы к дочерним элементам.Теперь это показывает, сколько тестов прошло успешно, а какие провалились.
Было бы неплохо сложить более конкретную информацию об ошибках из файла журнала буст-теста (но, может быть, кто-то другой сможет подобрать здесь).
Ключевой момент: укажите следующие флагиBoost.Test для разделения stdout / stderr.Вот снимок из скрипта сборки ant:
<exec executable="cmd " dir="bin/x64/Release">
<arg line="/k @{file} --build_info --report_format=xml --report_level=detailed --log_level=all --log_format=xml 1> @{file}.log.xml 2> @{file}.result.xml"/>
</exec>
Затем преобразуйте его:
<xslt in="@{file}.result.xml" out="@{file}.ccresult.xml" style="transform.xslt" />
Фактический transform.xslt:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/TestResult/TestSuite">
<testsuite>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:for-each select="TestCase">
<testcase>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:if test="@result!='passed'">
<failure>See log file.</failure>
</xsl:if>
</testcase>
</xsl:for-each>
</testsuite>
</xsl:template>
</xsl:stylesheet>