web-dev-qa-db-fra.com

Existe-t-il un plugin HTML Junit Report décent pour Maven?

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?

32
Y.H Wong

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:

  1. 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. 

  2. 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>
    
  3. 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".

27
Pascal Thivent

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!

46
prasanna

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?

4
Y.H Wong

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>
2
djangofan

Vous pouvez définir -Dmaven.test.failure.ignore=true pour générer le rapport de test lorsque les tests échouent.

2

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.

1
Sach_21590

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