La tâche junitreport
utilise XSLT pour générer le rapport à partir des fichiers XML générés par la tâche junit
.
Vous pouvez personnaliser la sortie en spécifiant votre propre XSLT en utilisant l'attribut styledir
de l'élément report
imbriqué:
<!-- use reportstyle/junit-frames.xsl to produce the report -->
<report styledir="reportstyle" format="frames" todir="testreport"/>
Pour la personnalisation de la sortie, une option serait de faire une copie du default XSLT et modifier cette. Ou vous pouvez rechercher un autre XSLT qui est plus facile à personnaliser pour vos besoins.
Pour les petites modifications, il peut être plus simple d'importer le fichier XSLT par défaut et de remplacer les modèles que vous souhaitez personnaliser. Par exemple, pour ajouter une colonne à chaque test, vous devez remplacer le modèle qui génère l'en-tête de la table et le modèle qui génère une ligne de table. Ci-dessous, je viens de copier ces modèles et de les modifier un peu pour ajouter une colonne (cherchez deux ajouts marqués <!-- ADDED -->
).
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- import the default stylesheet -->
<xsl:import href="jar:file:lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl"/>
<!-- override the template producing the test table header -->
<xsl:template name="testcase.test.header">
<xsl:param name="show.class" select="''"/>
<tr valign="top">
<xsl:if test="boolean($show.class)">
<th>Class</th>
</xsl:if>
<th>Name</th>
<th>Status</th>
<th width="80%">Type</th>
<th nowrap="nowrap">Time(s)</th>
<!-- ADDED -->
<th>Screenshot</th>
</tr>
</xsl:template>
<!-- override the template producing a test table row -->
<xsl:template match="testcase" mode="print.test">
<xsl:param name="show.class" select="''"/>
<tr valign="top">
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="error">Error</xsl:when>
<xsl:when test="failure">Failure</xsl:when>
<xsl:otherwise>TableRowColor</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:variable name="class.href">
<xsl:value-of select="concat(translate(../@package,'.','/'), '/', ../@id, '_', ../@name, '.html')"/>
</xsl:variable>
<xsl:if test="boolean($show.class)">
<td><a href="{$class.href}"><xsl:value-of select="../@name"/></a></td>
</xsl:if>
<td>
<a name="{@name}"/>
<xsl:choose>
<xsl:when test="boolean($show.class)">
<a href="{concat($class.href, '#', @name)}"><xsl:value-of select="@name"/></a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="@name"/>
</xsl:otherwise>
</xsl:choose>
</td>
<xsl:choose>
<xsl:when test="failure">
<td>Failure</td>
<td><xsl:apply-templates select="failure"/></td>
</xsl:when>
<xsl:when test="error">
<td>Error</td>
<td><xsl:apply-templates select="error"/></td>
</xsl:when>
<xsl:otherwise>
<td>Success</td>
<td></td>
</xsl:otherwise>
</xsl:choose>
<td>
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="@time"/>
</xsl:call-template>
</td>
<!-- ADDED -->
<td>
<a href="link/to/screenshot/for/test/{@name}">screenshot</a>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
Voilà comment le résultat ressemble à:
quel type de capture d'écran recherchez vous? vous ne voulez pas seulement la trace de pile de l'erreur, vous cherchez la sortie de console, ou est-ce une représentation graphique? –
Salut, je ne veux pas savoir comment obtenir une capture d'écran. J'ai déjà réalisé cela. Ce que je dois savoir, c'est comment puis-je étendre le rapport JUnit, afin que je puisse inclure un lien vers ma capture d'écran. Merci. – blackicecube
Rien de neuf avec les dernières versions de jUnit? –