我有一些C项目在
cruisecontrol.net运行.作为构建过程的一部分,我们编译并运行
Boost.Test单元测试套件.我已将这些配置为转储XML日志文件.虽然格式类似于JUnit / NUnit,但它并不完全相同(并且缺少一些信息),所以cruisecontrol.net无法接收它们.我想知道是否有人创建(或知道)现有的XSL转换,它将Boost.Test结果转换为JUnit / NUnit格式,或者直接转换为可呈现的(html)格式.
谢谢!
解决方法
我正在努力推动自己的Boost.Test – > JUnit XSL.请注意,这是为了使用Boost.Test的XML报告输出 – 而不是日志输出.这是一项正在进行的工作 – 这是我到目前为止所做的:
<?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"> <test-results> <xsl:attribute name="total"> <xsl:value-of select="sum(./TestSuite/@test_cases_passed) + sum(./TestSuite/@test_cases_Failed) + sum(./TestSuite/@test_cases_skipped) + sum(./TestSuite/@test_cases_aborted)"/> </xsl:attribute> <xsl:attribute name="failures"> <xsl:value-of select="sum(./TestSuite/@test_cases_Failed) + sum(./TestSuite/@test_cases_aborted)"/> </xsl:attribute> <xsl:attribute name="skipped"> <xsl:value-of select="sum(./TestSuite/@test_cases_skipped)"/> </xsl:attribute> <xsl:attribute name="not-run"> <xsl:value-of select="sum(./TestSuite/@test_cases_skipped)"/> </xsl:attribute> <xsl:call-template name="testSuite" /> </test-results> </xsl:template> <xsl:template name="testSuite"> <xsl:for-each select="TestSuite"> <test-suite> <xsl:call-template name="testAttributes" /> <results> <xsl:call-template name="testSuite" /> <xsl:for-each select="TestCase"> <test-case> <xsl:call-template name="testAttributes" /> </test-case> </xsl:for-each> </results> </test-suite> </xsl:for-each> </xsl:template> <xsl:template name="testAttributes"> <xsl:attribute name="name"> <xsl:value-of select="@name"/> </xsl:attribute> <xsl:attribute name="success"> <xsl:choose> <xsl:when test="@result = 'passed'">True</xsl:when> <xsl:when test="@result != 'passed'">False</xsl:when> </xsl:choose> </xsl:attribute> <xsl:attribute name="executed">True</xsl:attribute> <xsl:attribute name="time">0</xsl:attribute> <xsl:attribute name="asserts"> <xsl:value-of select="@assertions_Failed + @assertions_passed"/> </xsl:attribute> </xsl:template> </xsl:stylesheet>
我将它集成到我的构建过程中,它很好地被ccnet接收和处理.它并不完美,但它比我以前完全缺乏报告更好.我对如何将Boost.Test数据映射到JUnit报告的“总计”,“失败”,“跳过”和“未运行”字段的建议持开放态度.此外,遗憾的是,错误详细信息数据(指示失败的性质以及发生故障的文件/行号)仅打印到日志,而不是报告,因此我必须“合并”这两个以获取所有我理想的数据.