2009-06-08 2 views
17

Sto configurando JUnit in Ant in modo che i test di unità vengano eseguiti su ogni build. Desidero che l'output di non riesca a stampare i test nell'output della console Ant ogni volta che vengono eseguiti. Non ho bisogno di vedere alcun risultato da test successivi.Come si configura l'attività JUnit Ant per produrre solo l'output in caso di errori?

Ecco il relativo 'del mio build.xml lima:

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

Questo produce quasi quello che voglio, i test in mancanza sono dettagliate nell'output Formica, tranne che i test successivi anche scrivere il seguente output:

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

credo di aver provato tutte le combinazioni elencate nella documentazione JUnit task, tra cui:

  • printsummary attributo
  • showoutput attributo elemento
  • formatter con ogni tipo di type

mio caso d'uso è in esecuzione ant dalla riga di comando. Mentre scrivo più test, non voglio che l'output dei test successivi sia così grande che l'output dei test non funzionanti scorra dallo schermo. Voglio solo che lo ant sia silenzioso a meno che non ci sia un test non funzionante che richiede la mia attenzione. Come posso configurare Ant/JUnit per fare questo?

Sto usando Ant versione 1.6.4 e JUnit 4.6.

+0

Aggiunta la possibilità personalizzata di runner di prova personalizzato JUnit. – VonC

risposta

13

Una possibilità sarebbe quella di definire il proprio formattatore xml con l'attributo 'classname' (ed estendere org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter, potenzialmente non fare nulla su endTest() or endTestsuite() methods).
Questo formattatore ignorerebbe il messaggio informativo e visualizzerà solo i messaggi di errore.


Nota: this settings parlare della possibilità di sola visualizzazione test falliti:

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

Avete provato questo?

Nota: il "showoutput="true" e <formatter type="brief" usefile="false"/>" può essere un po 'problematico, come illustrato da questo recent (February 2012) ticket)


Ancora un altro approch sarebbe quello di definire la formica corridore Juint prova, sostenendo formica JUnitResultFormatter e visualizzazione solo dei messaggi di stderr.

Il EclipseTestRunner di eclipse è un buon esempio.

+0

Risposta molto bella! – guerda

+0

Grazie, l'esempio che hai mostrato è essenzialmente lo stesso di quello che avevo postato nella mia domanda, quindi penso che la differenza potrebbe essere qualcosa a che fare con l'esecuzione nel contesto Netbeans. Proverò a implementare un formattatore personalizzato ma speravo di evitare di doverlo fare. –

+0

Ho implementato un formattatore personalizzato ed è stato in grado di raggiungere il mio obiettivo originale. –