¿Cómo ejecutar todas las pruebas JUnit en una categoría / suite con Ant?

Estoy usando JUnit Categories y ClassPathSuite en una configuración similar a la descrita en esta respuesta . Recordar:

public interface FastTests { } @RunWith(Categories.class) @Categories.IncludeCategory(FastTests.class) @Suite.SuiteClasses(AllTests.class) public class FastTestSuite { } @RunWith(ClasspathSuite.class) public class AllTests { } 

… donde AllTests hace uso de la biblioteca ClasspathSuite .

Una clase de prueba que sea parte de la categoría FastTests se vería así:

 @Category(FastTests.class) public class StringUtilsTest { // ... } 

Cuando ejecuto “FastTestSuite” en mi IDE, todas las pruebas con la anotación FastTests se ejecutan, agradable y sin problemas:

enter image description here

Ahora, quiero hacer lo mismo con Ant . (Para mi sorpresa, no pude encontrar instrucciones para esto en SO.) En otras palabras, necesito un objective Ant que ejecute todas las pruebas con la anotación FastTests.

He intentado algunos enfoques simplistas utilizando o

       

… pero sin suerte, hasta ahora.

Editar : además del IDE, funciona bien con JUnitCore en la línea de comando:

 $ java -classpath "classes:WebContent/WEB-INF/lib/*" org.junit.runner.JUnitCore fi.foobar.FastTestSuite ............. Time: 0.189 OK (13 tests) 

Bien, lo tengo trabajando con simplemente:

          

Intenté antes, pero cometí el error de utilizar "**/FastTestSuite.java" lugar de "**/FastTestSuite.class" en el elemento … Disculpa 🙂

NB : es necesario configurar fork="yes" (es decir, ejecutar las pruebas en una VM separada); de lo contrario, esto también producirá “initializationError” en java.lang.reflect.Constructor.newInstance (Constructor.java:513) como (ver comentarios sobre la pregunta). Sin embargo, no pude hacer que funcionara incluso con fork="yes" .

El único inconveniente es que esto produce solo un archivo de informe JUnit XML (TEST-fi.foobar.FastTestSuite.xml) que hace que parezca que todos los (cientos) de exámenes están en una clase (FastTestSuite). Si alguien sabe cómo ajustar esto para mostrar las pruebas en sus clases y paquetes originales, hágamelo saber.

Encontré una solución para usar la tarea junit de ant para ejecutar una prueba de una Category específica:

              

Ejecute la prueba suministrando la propiedad category.name a ant como esta:

 ant -Dcategory.name=FastTests test 

El uso de batchtest también producirá archivos de informe JUnit XML por prueba (por ejemplo, TEST-fi.foobar.FastTestClassN.xml).