What XSLT converts JUnit Xml format to JUnit Plain format
11,785
Here ya go.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="no"/>
<xsl:template match="/testsuite">
Testsuite: <xsl:value-of select="@name" />
<xsl:text>
Tests run: </xsl:text>
<xsl:value-of select="@tests" />
<xsl:text>, Failures: </xsl:text>
<xsl:value-of select="@failures" />
<xsl:text>, Errors: </xsl:text>
<xsl:value-of select="@errors" />
<xsl:text>, Time elapsed: </xsl:text>
<xsl:value-of select="@time" />
<xsl:text> sec</xsl:text>
<xsl:apply-templates select="system-out" />
<xsl:apply-templates select="system-err" />
<xsl:text>
--------- ----------- ---------
</xsl:text>
<xsl:apply-templates select="testcase" />
</xsl:template>
<xsl:template match="testcase">
<xsl:text>
Testcase: </xsl:text>
<xsl:value-of select="@name" />
<xsl:text> took </xsl:text>
<xsl:value-of select="@time" />
</xsl:template>
<xsl:template match="system-out">
<xsl:text>
------ Standard output ------
</xsl:text>
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="system-err">
<xsl:text>
------ Error output ------
</xsl:text>
<xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
You probably want to play a bit with the formatting though.
Author by
sahana
Updated on June 12, 2022Comments
-
sahana almost 2 years
I'm moving my build from Ant to Gradle. Ant allows multiple reports with different formats to be created by the JUnit task. Gradle is more restrictive-- it generates a HTML report and a XML report. The XML report is a superset of the JUnit text report so it can be transformed from one to the other. What XSLT will convert the XML to the Text? Here is an example XML:
<?xml version="1.0" encoding="UTF-8"?> <testsuite errors="0" failures="0" hostname="spina.stsci.edu" name="edu.stsci.CoSI.test.DependencySupressingConstraintJUnitTest" tests="6" time="0.14" timestamp="2012-02-27T18:08:03"> <properties /> <testcase classname="edu.stsci.CoSI.test.DependencySupressingConstraintJUnitTest" name="testSupressionWorks" time="0.01" /> <testcase classname="edu.stsci.CoSI.test.DependencySupressingConstraintJUnitTest" name="testSupressionWorksWithDependenciesDisabled" time="0.0020" /> <testcase classname="edu.stsci.CoSI.test.DependencySupressingConstraintJUnitTest" name="testPropagationIsDeferred" time="0.0010" /> <testcase classname="edu.stsci.CoSI.test.DependencySupressingConstraintJUnitTest" name="testPropagationIsDeferredWhenDependenciesAreSuppressed" time="0.0010" /> <testcase classname="edu.stsci.CoSI.test.DependencySupressingConstraintJUnitTest" name="testPropagationIsDeferredWhenDependenciesAreSuppressed2" time="0.0010" /> <testcase classname="edu.stsci.CoSI.test.DependencySupressingConstraintJUnitTest" name="testGarbageCollection" time="0.066" /> <system-out><![CDATA[Running Supressing Constraint Running Supressing Constraint Running Supressing Constraint Change Me is: 2 Running Supressing Constraint Change Me is: 5 ]]></system-out> <system-err><![CDATA[]]></system-err> </testsuite>
Here is the text that I would like it to produce:
Testsuite: edu.stsci.CoSI.test.DependencySupressingConstraintJUnitTest Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 0.363 sec ------------- Standard Output --------------- Running Supressing Constraint Running Supressing Constraint Running Supressing Constraint Change Me is: 2 Running Supressing Constraint Change Me is: 5 ------------- ---------------- --------------- Testcase: testSupressionWorks took 0.001 sec Testcase: testSupressionWorksWithDependenciesDisabled took 0.001 sec Testcase: testPropagationIsDeferred took 0 sec Testcase: testPropagationIsDeferredWhenDependenciesAreSuppressed took 0.001 sec Testcase: testPropagationIsDeferredWhenDependenciesAreSuppressed2 took 0 sec Testcase: testGarbageCollection took 0.038 sec
Certain details aren't important (like the format of the seconds).
-
sahana about 12 yearsThanks @Mr Happy. That does exactly what I wanted (with some tweaks).
-
Lari Hotari over 9 yearsThanks. I used this for outputting test errors in a gradle build as plain text to the Travis CI console: github.com/lhotari/travis-gradle-test-failures-to-console/blob/…