2012-07-31 4 views
3

J'essaie d'ajouter un script Ant au projet de mon entreprise pour exécuter les tests jUnit. Voici ce que j'ai:Comment afficher les erreurs jUnit via Ant

<target name="unit-tests"> 
    <junit> 
     <classpath> 
      <pathelement location="${project.libext.dir}/junit-4.1.jar"/> 
     </classpath> 
     <batchtest> 
      <fileset dir="${project.src-test.dir}/my/company/." /> 
     </batchtest> 
    </junit> 
</target> 

Le script est saisissant mes tests JUnit correctement, mais il dit il y a des erreurs. Mais toute la sortie dira des choses comme:

[junit] Test package.MyTest FAILED 

Je veux savoir pourquoi il a échoué. J'ai essayé d'ajouter un tas d'attributs à l'étiquette junit (printsummary, showoutput, etc), mais n'arrive pas à trouver la bonne combinaison. Le mieux que j'ai réussi à obtenir est:

[junit] Running package.MyTest 
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 

je vraiment besoin de la trace complète de la pile, etc que le test fonctionne bien quand j'Exécuter en tant> Junit test via Eclipse. Quelqu'un sait-il comment imprimer la trace de la pile?

Répondre

6

J'ai trouvé la réponse. Nécessaire d'ajouter un formateur.

<target name="unit-tests"> 
    <junit> 
     <classpath> 
      <pathelement location="${project.libext.dir}/junit-4.1.jar"/> 
     </classpath> 
     <formatter type="plain" usefile="false" /> 
     <batchtest> 
      <fileset dir="${project.src-test.dir}/my/company/." /> 
     </batchtest> 
    </junit> 
</target> 
0

Vous ne pouvez pas imprimer la trace de pile complète à partir des tests dans la sortie Ant AFAIK; il est intégré dans le fichier de rapport JUnit. Vous pouvez soit naviguer séparément, ou si vous utilisez un serveur d'intégration continue tel que Jenkins ou CruiseControl pour exécuter vos builds, vous pouvez configurer un plugin qui sera lié aux rapports de test.

+0

Comment déterminez-vous l'emplacement du fichier de rapport jUnit? –

+0

Je devine l'attribut 'todir' sur la balise' batchtest', mais cela ne semble pas créer quoi que ce soit. –