2009-06-08 16 views
17

Je suis en train de configurer JUnit dans Ant afin que les tests unitaires soient exécutés sur chaque build. Je voudrais que la sortie de échoue tests à imprimer dans la sortie de la console Ant à chaque fois qu'ils sont exécutés. Je n'ai pas besoin de voir les résultats des tests suivants.Comment configurer la tâche JUnit Ant pour produire uniquement une sortie en cas de défaillance?

Voici le bit correspondant de mon dossier build.xml:

<junit> 
    <classpath> 
     <pathelement path="${build}"/> 
    </classpath> 
    <formatter type="brief" usefile="false"/> 
    <batchtest> 
     <fileset dir="${src}" includes="my/tree/junit/"/> 
    </batchtest> 
</junit> 

Ce produit à peu près ce que je veux, tests ayant échoué sont détaillées dans la sortie Ant, sauf que les tests suivants écrivent également la sortie suivante:

 [junit] Testsuite: my.tree.junit.ExampleTest 
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.002 sec

Je crois avoir essayé toutes les combinaisons figurant dans la documentation JUnit task, y compris:

  • printsummary attribut
  • showoutput attribut
  • élément formatter avec chaque type de type

Mon cas d'utilisation est en cours d'exécution ant de la ligne de commande. Au fur et à mesure que j'écris plus de tests, je ne veux pas que la sortie des tests suivants soit si grande que la sortie des tests défaillants défile de l'écran. Je veux juste que ant soit tranquille à moins qu'un test qui échoue nécessite mon attention. Comment est-ce que je peux configurer Ant/JUnit pour faire ceci? J'utilise Ant version 1.6.4 et JUnit 4.6.

+0

Ajout de la possibilité d'un coureur de test personnalisé JUnit personnalisé. – VonC

Répondre

13

Une possibilité serait de définir votre propre formateur XML avec l'attribut 'classname' (et d'étendre org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter, potentiellement ne rien faire sur endTest() or endTestsuite() methods).
Ce formateur ignorait les messages d'information et affichait uniquement les messages d'échec.


Note: this settings mentionnent la possibilité d'afficher seulement les tests ont échoué:

<junit showoutput="true" 
     fork="true" 
     failureproperty="tests.failed" 
     errorproperty="tests.failed"> 
    <batchtest todir="${test.results.dir}"> 
     <fileset dir="test"> 
      <include name="**/*Test.java"/> 
     </fileset> 
    </batchtest> 
    <classpath path="${classes.dir}:${junit.jar}:${test.classes.dir}"/> 
    <formatter usefile="false" type="brief"/> 
    <!-- <formatter type="xml"/> If missing, only displays failed tests --> 
</junit> 

Avez-vous essayé cela?

Note: le « showoutput="true" et <formatter type="brief" usefile="false"/> » peut être un peu problématique, comme l'illustre cette recent (February 2012) ticket)


Encore une autre approch serait de définir votre fourmi Juint coureur d'essai, le soutien fourmi JUnitResultFormatter et n'afficher que les messages stderr. Le EclipseTestRunner d'Eclipse est un bon exemple.

+0

Très belle réponse! – guerda

+0

Merci, l'exemple que vous avez montré est essentiellement le même que ce que j'avais posté dans ma question, donc je pense que la différence pourrait être quelque chose à faire avec l'exécution dans le contexte Netbeans. Je vais essayer de mettre en œuvre un formateur personnalisé, mais j'espérais éviter d'avoir à le faire. –

+0

J'ai implémenté un formateur personnalisé et j'ai réussi à atteindre mon objectif initial. –

Questions connexes