Je trouve le plug-in surefire-report
très inapproprié pour mon style de travail. Je nettoie le projet tout le temps et je ne veux pas passer 5 minutes à reconstruire le site en entier à chaque fois que je veux consulter le rapport de test dans mon navigateur.
Si je tape mvn surefire-report:report-only
, le rapport généré est trop moche et à peine lisible.
Ce que je recherche, c'est quelque chose comme la tâche JUnitReport de ant Y en at-il déjà un disponible?
En effet, générer l'ensemble du site à chaque construction n'est clairement pas une option. Mais le problème est que mvn surefire-report:report-only
ne crée pas les fichiers css/*. Css, d’où le résultat déplorable. Ceci est enregistré dans SUREFIRE-616 (cela ne veut pas dire que quelque chose va arriver). Personnellement, je n'utilise pas beaucoup les rapports HTML pour pouvoir vivre avec cela, mais ce n'est pas une bonne réponse. Voici donc une solution de contournement basée sur la tâche ant (* soupir *):
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>test-reports</id>
<phase>test</phase>
<configuration>
<tasks>
<junitreport todir="target/surefire-reports">
<fileset dir="target/surefire-reports">
<include name="**/*.xml"/>
</fileset>
<report format="noframes" todir="target/surefire-reports"/>
</junitreport>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-junit</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
</plugin>
Mise à jour: Mon idée de départ était de lancer le plugin Maven AntRun "à la demande" pour générer les rapports ... mais ce n'est pas ce que j'ai posté, je l'ai lié à la phase test
... Mais je ne pensais pas sur le cas des tests ayant échoué (cela arrêterait la construction et empêcherait l'exécution du plugin AntRun). Alors, soit:
Ne liez pas le plug-in AntRun à la phase test
, déplacez la configuration en dehors de execution
et appelez mvn antrun:run
sur la ligne de commande pour générer les rapports souhaités.
ou utilisez l'option testFailureIgnore
du mojo de test et réglez-le sur true dans la configuration du plugin surefire:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
ou définissez cette expression à partir de la ligne de commande à l'aide du paramètre -D:
$ mvn test -Dmaven.test.failure.ignore=true
Je pense que l'option n ° 1 est la meilleure option, vous ne voulez pas nécessairement générer les rapports (surtout lorsque le test est réussi) et les générer systématiquement peut ralentir la construction sur le long terme. Je les générerais "à la demande".
C'est ce que je fais:
# Run tests and generate .xml reports
mvn test
# Convert .xml reports into .html report, but without the CSS or images
mvn surefire-report:report-only
# Put the CSS and images where they need to be without the rest of the
# time-consuming stuff
mvn site -DgenerateReports=false
allez sur target/site/surefire-report.html pour le rapport.
Une fois les tests terminés, les deux autres durent environ 3,5 secondes.
J'espère que cela pourra aider. Prendre plaisir!
Merci à Pascal, j'ai trouvé une solution améliorée pour faire ce que je veux faire:
<plugin>
<!-- Extended Maven antrun plugin -->
<!-- https://maven-antrun-extended-plugin.dev.Java.net/ -->
<groupId>org.jvnet.maven-antrun-extended-plugin</groupId>
<artifactId>maven-antrun-extended-plugin</artifactId>
<executions>
<execution>
<id>test-reports</id>
<phase>test</phase>
<configuration>
<tasks>
<junitreport todir="target/surefire-reports">
<fileset dir="target/surefire-reports">
<include name="**/*.xml"/>
</fileset>
<report format="noframes" todir="target/surefire-reports"/>
</junitreport>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.Apache.ant</groupId>
<artifactId>ant-junit</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>org.Apache.ant</groupId>
<artifactId>ant-trax</artifactId>
<version>1.8.0</version>
</dependency>
</dependencies>
</plugin>
Cette version utilise une version plus récente de ant et le meilleur de tous. Cependant, je n'ai toujours pas trouvé le moyen de générer un rapport de test lorsque les tests échouent. Comment devrais-je faire ça?
Voici comment je l'ai fait avec l'objectifsite maven-surefire: report:
<reporting>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.16</version>
<configuration>
<showSuccess>false</showSuccess>
<outputDirectory>${basedir}/target/surefire-reports</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
<configuration>
<outputDirectory>${basedir}/target/surefire-reports</outputDirectory>
</configuration>
</plugin>
</plugins>
</reporting>
</project>
Vous pouvez définir -Dmaven.test.failure.ignore=true
pour générer le rapport de test lorsque les tests échouent.
Créer une nouvelle configuration d’exécution maven et avec goal =>
surefire-report:report site -DgenerateReports=false
Cela peut vous aider à avoir une meilleure vue du rapport avec css.
Exécuter la commande ci-dessous
mvn clean install surefire-report:report
Vous pouvez trouver le rapport à l'emplacement ci-dessous.
{basedir}/target/site/surefire-report.html
Pour plus de détails, consultez le lien ci-dessous.
http://maven.Apache.org/surefire/maven-surefire-report-plugin/usage.html