| <!DOCTYPE html> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| https://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <html lang="en"> |
| <head> |
| <link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> |
| <title>JUnitReport Task</title> |
| </head> |
| |
| <body> |
| |
| <h2 id="junitreport">JUnitReport</h2> |
| <h3>Description</h3> |
| <p>Merge the individual XML files generated by the <code>JUnit</code> task and eventually apply a |
| stylesheet on the resulting merged document to provide a browsable report of the testcases |
| results.</p> |
| |
| <p><strong>Note</strong>: This task depends on external libraries not included in the Apache Ant |
| distribution. See <a href="../install.html#librarydependencies">Library Dependencies</a> for more |
| information.</p> |
| |
| <h3>Requirements</h3> |
| |
| <p>The task needs Apache <a href="https://xml.apache.org/xalan-j/" target="_top">Xalan 2.4.1+ or |
| Xalan XSLTC</a> (JDK 1.4 contains a version of Xalan 2.x, while JDK 1.5 ships with a version of |
| XSLTC). JDK 1.4.2-01 and later ships with a bundled Xalan 2.4.1+, meaning that JDKs prior to version |
| 1.4.2-01 won't work out of the box. The table below summarize the compatibility status.</p> |
| <table> |
| <tr><th scope="col">Xalan</th><th scope="col">Sun JDK Bundle</th><th scope="col">Status</th></tr> |
| <tr><td>2.4.1+</td><td>JDK 1.4.2-01+</td><td>OK</td></tr> |
| <tr><td>XSLTC</td><td>JDK 1.5.x</td><td>OK</td></tr> |
| <tr><td>2.x</td><td>JDK 1.4.x</td><td><em><u>Deprecated</u>, |
| use <samp>${ant.home}/etc/junit-frames-xalan1.xsl</samp><br/>Upgrade Xalan using the JDK endorsement |
| mechanism</em></td></tr> |
| </table> |
| |
| <p>In Ant 1.6.2, we had to decide between supporting Xalan 1/Xalan 2.4.1- and Xalan 2.4.1+/XSLTC, |
| because there was no way to support both couples at the same time.</p> |
| <p><em>Since Ant 1.7</em>, we dropped support for Xalan 1, because Xalan 1 was not available anymore |
| for quite some time.</p> |
| |
| <h3>Parameters</h3> |
| <table class="attr"> |
| <tr> |
| <th scope="col">Attribute</th> |
| <th scope="col">Description</th> |
| <th scope="col">Required</th> |
| </tr> |
| <tr> |
| <td>tofile</td> |
| <td>The name of the XML file that will aggregate all individual XML testsuites previously |
| generated by the <code>JUnit</code> task.</td> |
| <td>No; defaults to <samp>TESTS-TestSuites.xml</samp></td> |
| </tr> |
| <tr> |
| <td>todir</td> |
| <td>The directory where the file resulting from the individual XML testsuite aggregation should |
| be written.</td> |
| <td>No; defaults to current directory</td> |
| </tr> |
| </table> |
| <h3 id="nested">Parameters specified as nested elements</h3> |
| <h4>fileset</h4> |
| <p><code>junitreport</code> collects individual xml files generated by the <code>JUnit</code> task |
| using the nested <a href="../Types/fileset.html"><code><FileSet></code></a> element.</p> |
| <h4>report</h4> |
| <p>Generate a browsable report based on the document created by the merge.</p> |
| <h3>Parameters</h3> |
| <table class="attr"> |
| <tr> |
| <th scope="col">Attribute</th> |
| <th scope="col">Description</th> |
| <th scope="col">Required</th> |
| </tr> |
| <tr> |
| <td>format</td> |
| <td>The format of the generated report. Must be either <q>noframes</q> or <q>frames</q>.</td> |
| <td>No; defaults to <q>frames</q></td> |
| </tr> |
| <tr> |
| <td>styledir</td> |
| <td>The directory where the stylesheets are defined. They must be conforming to the following |
| conventions: |
| <ul> |
| <li><q>frames</q> format: the stylesheet must be named <samp>junit-frames.xsl</samp>, |
| or <samp>junit-frames-saxon.xsl</samp> if you are using Saxon 9+.</li> |
| <li><q>noframes</q> format: the stylesheet must be named <samp>junit-noframes.xsl</samp>, |
| or <samp>junit-noframes-saxon.xsl</samp> if you are using Saxon 9+.</li> |
| </ul> |
| </td> |
| <td>No; defaults to embedded stylesheets</td> |
| </tr> |
| <tr> |
| <td>todir</td> |
| <td>The directory where the files resulting from the transformation should be written to.</td> |
| <td>No; defaults to current directory</td> |
| </tr> |
| </table> |
| <p>Ant assumes the following concerning the <q>frames</q> and <q>noframes</q> formats:</p> |
| <ul> |
| <li>The <q>frames</q> format uses a stylesheet which is generating output <em>only</em> by |
| redirecting.</li> |
| <li>The <q>noframes</q> format does not use redirecting and generates one file |
| called <samp>junit-noframes.html</samp>.</li> |
| </ul> |
| <p>Custom versions of <samp>junit-frames.xsl</samp> or <samp>junit-noframes.xsl</samp> must adhere |
| to the above conventions.</p> |
| |
| <h3>Nested element of the report tag</h3> |
| <h4>param</h4> |
| <p><em>Since Ant 1.7</em>, the <var>report</var> tag supports nested <code>param</code> tags. These |
| tags can pass XSL parameters to the stylesheet.</p> |
| <h3>Parameters</h3> |
| <table class="attr"> |
| <tr> |
| <th scope="col">Attribute</th> |
| <th scope="col">Description</th> |
| <th scope="col">Required</th> |
| </tr> |
| <tr> |
| <td>name</td> |
| <td>Name of the XSL parameter</td> |
| <td>Yes</td> |
| </tr> |
| <tr> |
| <td>expression</td> |
| <td>Text value to be placed into the <code>param</code>.<br/>Was originally intended to be an |
| XSL expression.</td> |
| <td>Yes</td> |
| </tr> |
| <tr> |
| <td>if</td> |
| <td>The <code>param</code> will only be passed <a href="../properties.html#if+unless">if this |
| property is set</a>.</td> |
| <td>No</td> |
| </tr> |
| <tr> |
| <td>unless</td> |
| <td>The <code>param</code> will not be passed <a href="../properties.html#if+unless">if this |
| property is set</a>.</td> |
| <td>No</td> |
| </tr> |
| </table> |
| |
| <p>The built-in stylesheets support the following parameters:</p> |
| <table> |
| <tr> |
| <th scope="col">XSL Parameter</th> |
| <th scope="col">Description</th> |
| <th scope="col">Required</th> |
| </tr> |
| <tr> |
| <td>TITLE</td> |
| <td>Title used in <code><title></code> and <code><h1></code> tags</td> |
| <td>No; defaults to <q>Unit Test Results</q></td> |
| </tr> |
| </table> |
| |
| <h4>classpath</h4> |
| <p><em>Since Ant 1.9.5</em>. Like for the <a href="../Tasks/style.html#classpath">XSLT task</a>, a |
| nested <code><classpath></code> will be used to load the processor.</p> |
| |
| <h4>factory</h4> |
| <p><em>Since Ant 1.9.5</em>. Like for the <a href="../Tasks/style.html#factory">XSLT task</a>, a |
| nested <code><factory></code> can be used to specify factory settings.</p> |
| |
| <h3>Examples</h3> |
| |
| <p>Generate a <samp>TESTS-TestSuites.xml</samp> file in the directory <samp>reports</samp> and |
| generate the default framed report in the directory <samp>report/html</samp>.</p> |
| |
| <pre> |
| <junitreport todir="./reports"> |
| <fileset dir="./reports"> |
| <include name="TEST-*.xml"/> |
| </fileset> |
| <report format="frames" todir="./report/html"/> |
| </junitreport></pre> |
| |
| <p>This example requires a file called <samp>junitreport/junit-frames.xsl</samp>. The XSL |
| parameters <q>key1</q> and <q>key2</q> will be passed to the XSL transformation.</p> |
| |
| <pre> |
| <junitreport todir="${outputdir}"> |
| <fileset dir="${jrdir}"> |
| <include name="TEST-*.xml"/> |
| </fileset> |
| <report todir="${outputdir}/html" |
| styledir="junitreport" |
| format="frames"> |
| <param name="key1" expression="value1"/> |
| <param name="key2" expression="value2"/> |
| </report> |
| </junitreport></pre> |
| |
| </body> |
| </html> |