有趣的是沒有的上面爲我工作,也許是因爲新的CruiseControl(2.8.4),但無論如何。 CruiseControl會忽略上面所轉換的所有「錯誤」和「失敗」屬性,並且它會自行查詢子元素。現在這實際上顯示了有多少測試成功了,哪些失敗了。
將來自boost測試日誌文件的更具體的失敗信息摺疊(但也許其他人可以從這裏獲取)將是很好的。
關鍵點:指定以下標誌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>
JUnit是因爲升壓1.62的原生支持的格式boost.test – Raffi 2017-04-20 17:39:42