¿Cómo ejecutar pruebas JUnit por categoría en Maven?

Usando JUnit 4.8 y las nuevas anotaciones @Category, ¿hay alguna manera de elegir un subconjunto de categorías para ejecutar con el plugin Surefire de Maven?

Por ejemplo, tengo:

@Test public void a() { } @Category(SlowTests.class) @Test public void b() { } 

Y me gustaría ejecutar todas las pruebas no lentas como en: (tenga en cuenta que -Dtest.categories lo inventé …).

 mvn test -Dtest.categories=!SlowTests // run non-slow tests mvn test -Dtest.categories=SlowTests // run only slow tests mvn test -Dtest.categories=SlowTests,FastTests // run only slow tests and fast tests mvn test // run all tests, including non-categorized 

Así que el punto es que no quiero tener que crear suites de prueba (Maven simplemente selecciona todas las pruebas unitarias del proyecto, lo cual es muy conveniente) y me gustaría que Maven pueda elegir las pruebas por categoría. Creo que acabo de inventar las categorías -Dtest, así que me preguntaba si hay una instalación similar que pueda usar.

Maven se ha actualizado desde entonces y puede usar categorías.

Un ejemplo de la documentación de Surefire:

  maven-surefire-plugin 2.11  com.mycompany.SlowTests   

Esto ejecutará cualquier clase con la anotación @Category(com.mycompany.SlowTests.class)

Basado en esta publicación del blog , y simplificando, agréguela a su pom.xml:

   SlowTests  com.example.SlowTests    FastTests  com.example.FastTests       org.apache.maven.plugins maven-surefire-plugin 2.13   org.apache.maven.surefire surefire-junit47 2.13    ${testcase.groups}     

luego en la línea de comando

 mvn install -P SlowTests mvn install -P FastTests mvn install -P FastTests,SlowTests 

Tuve un caso similar en el que deseo ejecutar todas las pruebas, EXCEPTO una categoría determinada (por ejemplo, porque tengo cientos de pruebas no categorizadas heredadas, y no puedo / no quiero modificar cada una de ellas)

El plugin maven surefire permite excluir categorías, por ejemplo:

   NonSlowTests    org.apache.maven.plugins maven-surefire-plugin  my.category.SlowTest       

Puedes usar

 mvn test -Dgroups="com.myapp.FastTests, com.myapp.SlowTests" 

Pero asegúrese de configurar correctamente el plugin maven surefire

  org.apache.maven.plugins maven-surefire-plugin 2.11   org.apache.maven.surefire surefire-junit47 2.12.2    

Consulte los documentos en: https://maven.apache.org/surefire/maven-surefire-plugin/examples/junit.html

Perdí mucho tiempo con este error “groups / excludedGroups requiere TestNG o JUnit48 + en classpath de prueba de proyecto” porque pensé que estaba usando una versión incorrecta de junit, o una versión incorrecta del plugin surefire, o una combinación que no encaja.

No era nada de eso: en mi proyecto tenía un módulo de “configuración” que se creó antes del módulo que quería probar. Este módulo no tenía dependencia junit -> no tenía junit en el classpath …

Este error puede ayudar a otros …

No es exactamente lo mismo, pero al usar el plugin surefire, las clases de prueba se pueden elegir según el nombre del archivo. Sin embargo, no estás usando las Categorías Junit.

Un ejemplo para ejecutar solo pruebas DAO.

   test-dao test  test    none   **/com/proy/core/dao/**/*Test.java    

http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html

    Intereting Posts