2009-06-08 16 views
17

Estoy configurando JUnit en Ant para que las pruebas unitarias se ejecuten en cada compilación. Me gustaría que la salida de falla en las pruebas para imprimirse en la salida de la consola Ant siempre que se ejecuten. No necesito ver ningún resultado de las pruebas posteriores.¿Cómo configuro la tarea JUnit Ant para que solo produzca resultados en fallas?

Aquí es el bit correspondiente de mi build.xml fichero:

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

Esto produce casi lo que quiero, pruebas fallidas se detallan en la salida de la hormiga, salvo que las pruebas subsiguientes también escriben el resultado siguiente:

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

creo que he probado todas las combinaciones que figuran en la documentación JUnit task, entre ellos:

  • printsummary atributo
  • showoutput atributo
  • formatter elemento con cada tipo de type

Mi caso de uso se está ejecutando ant desde la línea de comando. A medida que escribo más pruebas, no quiero que la salida de las pruebas posteriores sea tan grande que la salida de las pruebas fallidas se desplaza fuera de la pantalla. Solo quiero que ant esté en silencio, a menos que haya una prueba fallida que requiera mi atención. ¿Cómo puedo configurar Ant/JUnit para hacer esto?

Estoy usando Ant versión 1.6.4 y JUnit 4.6.

+0

Acaba de agregar la posibilidad personalizada de corredores de pruebas JUnit. – VonC

Respuesta

13

Una posibilidad sería definir su propio formateador xml con el atributo 'classname' (y ampliar org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter, lo que podría no hacer nada en endTest() or endTestsuite() methods).
Ese formateador ignoraría el mensaje de información y solo mostraría los mensajes de falla.


Nota: this settings mencionar la posibilidad de mostrar solamente las pruebas fallidas:

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

¿Se han probado eso?

Nota: el "showoutput="true" y <formatter type="brief" usefile="false"/>" puede ser un poco problemático, como se ilustra en este recent (February 2012) ticket)


Sin embargo, otro approch sería definir el corredor de prueba Juint hormiga, el apoyo a la hormiga JUnitResultFormatter y mostrando solo mensajes de stderr

El EclipseTestRunner de eclipse es un buen ejemplo.

+0

Muy buena respuesta! – guerda

+0

Gracias, el ejemplo que mostró es esencialmente el mismo que el que había publicado en mi pregunta, por lo que creo que la diferencia podría tener algo que ver con ejecutarlo en el contexto de Netbeans. Intentaré implementar un formateador personalizado, pero esperaba evitar tener que hacer eso. –

+0

Implementé un formateador personalizado y logré mi objetivo original. –

Cuestiones relacionadas