36 votes

Enrichissement du rapport de test JUnit avec JavaDoc

Pour un client, nous avons besoin de générer détaillée des rapports de test pour les tests d'intégration qui ne montrent pas seulement que tout est vert, mais aussi de ce que le test ne. Mes collègues et moi sommes paresseux gars et nous ne voulons pas de pirater des feuilles de calcul ou des documents texte.

Pour cela, je pense à un moyen de documenter les plus complexes, les tests d'intégration avec JavaDoc des commentaires sur chacune @Test de la méthode annotée et chaque classe de test. Pour le test les gars, il est une bonne aide pour voir laquelle de ces exigences, Jira billet ou quel que soit le test est liée à ce que le test essaie de faire. Nous voulons fournir cette information à notre clientèle, aussi.

La grande question maintenant est: Comment pouvons-nous mettre la JavaDoc pour chaque méthode et chaque classe de test dans le JUnit rapports? Nous utilisons JUnit 4.9 et Maven.

Je sais qu'il y a une description pour chaque assertXXX(), mais nous avons vraiment besoin d'une belle liste HTML en tant que résultat ou d'un document PDF qui répertorie toutes les classes et il y a de la documentation, et en dessous tous les @des méthodes d'Essai et leur description, le temps d'essai, le résultat et en cas d'échec, la raison du pourquoi.

Ou est-il une autre alternative pour générer de la fantaisie des scripts de test? (Ou devrions-nous commencer un projet OpenSource sur ce!? ;-) )

22voto

Matthew Farwell Points 31257

Une façon d'y parvenir serait d'utiliser un RunListener, avec la mise en garde qu'il serait plus facile d'utiliser une annotation plutôt que de javadoc. Vous auriez besoin d'avoir un d'annotations personnalisées telles que:

@TestDoc(text="tests for XXX-342, fixes customer issue blahblah")
@Test
public void testForReallyBigThings() {
    // stuff
}

RunListener écoute des événements de test, tels que le test de début, fin d'essai, de test de l'échec, la réussite du test etc.

public class RunListener {
    public void testRunStarted(Description description) throws Exception {}
    public void testRunFinished(Result result) throws Exception {}
    public void testStarted(Description description) throws Exception {}
    public void testFinished(Description description) throws Exception {}
    public void testFailure(Failure failure) throws Exception {}
    public void testAssumptionFailure(Failure failure) {}
    public void testIgnored(Description description) throws Exception {}
}

Description contient la liste des annotations appliquée à la méthode d'essai, donc, en utilisant l'exemple ci-dessus, vous pouvez obtenir l'Annotation TestDoc à l'aide de:

description.getAnnotation(TestDoc.class);

et extraire le texte normal.

Vous pouvez ensuite utiliser l' RunListener pour générer les fichiers que vous voulez, avec le texte spécifique à ce test, si le test a réussi ou échoué ou a été ignorée, le temps, etc. Ce serait votre rapport personnalisé.

Puis, infaillible, vous pouvez spécifier une coutume à l'écoute, à l'aide de:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.10</version>
  <configuration>
    <properties>
      <property>
        <name>listener</name>
        <value>com.mycompany.MyResultListener,com.mycompany.MyResultListener2</value>
      </property>
  </configuration>
</plugin>

C'est à partir de Maven Plugin Surefire, en Utilisant JUnit, à l'Aide des modules d'écoute personnalisés et reporters

Cette solution a l'inconvénient de ne pas disposer de la souplesse de la javadoc autant que les retours chariot, la mise en forme est concerné, mais il a l'avantage que la documentation est dans un lieu précis, l'annotation TestDoc.

5voto

Patrick Magee Points 1376

Avez-vous regardé Maven Sûr-le-feu rapports?

Vous pouvez générer un rapport HTML de votre JUnit Tests.

http://maven.apache.org/plugins/maven-surefire-report-plugin/

Je ne suis pas sûr de savoir comment personnalisable c'est bien. Mais c'est un bon point de départ.

Je sais aussi que TestNG ( alternative à JUnit ) a un certain rapport la création de capacités. http://testng.org/doc/documentation-main.html#logging-junitreports

Je recommande également de log4j http://logging.apache.org/log4j/1.2/manual.html

2voto

lols Points 31

vous pouvez utiliser jt-report un excellent cadre pour les rapports de test.

1voto

Reid Mac Points 802

J'ai créé un programme en utilisant testNG et iText qui affiche les résultats du test dans un beau rapport en format pdf. Vous pouvez mettre une description de votre test dans le @Test de la balise, et qui peuvent être inclus dans le .rapport pdf aussi. Il fournit les temps d'exécution des tests, et pour l'ensemble de la suite. Il est actuellement utilisé pour tester webapps avec le sélénium, mais cette partie peut être ignorée. Il vous permet également d'exécuter plusieurs suites de test dans un seul terme, et si les tests échouent, il vous permet de re-exécuter que ces tests sans avoir à ré-exécuter l'intégralité de la suite, et ces résultats seront annexés à l'original des résultats de PDF. Voir ci-dessous l'image pour un lien vers la source si vous êtes intéressé. Je ne me dérangerait pas que cela devienne un projet opensource que j'ai un bon départ, même si je ne suis pas sûr de savoir comment aller à ce sujet. Voici une capture d'écran enter image description here

Donc, j'ai compris comment créer un projet sur sourceforge. Voici le lien sourceforge lien

0voto

havexz Points 6707

Comme mentionné ci-dessus maven est certainement le chemin à parcourir.. Il rend la vie vraiment facile. Vous pouvez créer un projet maven assez facile en utilisant le plugin m2eclipse. Une fois que c'est fait. Il suffit d'exécuter ces commandes:

cd <project_dir_where_you_have_pom_file>
mvn site:site

Cette commande va créer des feuilles de style pour vous. Dans le même répertoire exécuter:

mvn surefire-report:report

Cela permettra d'exécuter les cas de test et de convertir la sortie html. Vous pouvez trouver la sortie dans la 'target/site/surefire-report.html'.

Ci-dessous l'extrait de code. Comme vous pouvez le voir tous les cas de tests (écrit en JUnit) sont indiqués dans le code html. D'autres méta-informations comme le nombre total de pas de cas de test a couru, la façon dont beaucoup de succès, temps, etc., est aussi là.

Puisque je ne peux pas télécharger l'image je ne peux pas vous montrer la sortie.

Vous pouvez aller plus loin et peut donner la version exacte du plugin à utiliser comme

mvn org.apache.maven.plugins:maven-site-plugin:3.0:site org.apache.maven.plugins:maven-surefire-report-plugin:2.10:report

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X