Hacer que Maven ejecute todas las pruebas, incluso cuando algunas fallan


243

Tengo un proyecto con varios módulos. Cuando pasan todas las pruebas, la prueba de Maven las ejecuta a todas.

Cuando las pruebas fallan en el primer módulo, maven no continuará con el próximo proyecto. Tengo testFailureIgnore establecido en verdadero en la configuración de Surefire, pero no ayuda.

¿Cómo hago para que maven ejecute todas las pruebas?


¿Qué versión del complemento maven-surefire?
Pascal Thivent

Respuestas:


359

De la documentación de Maven Embedder :

-fae, --fail-at-end Solo falla la construcción después; permitir que continúen todas las compilaciones no afectadas

-fn, --fail-never NUNCA falle la compilación, independientemente del resultado del proyecto

Entonces, si está probando un módulo, está seguro de usarlo -fae.

De lo contrario, si tiene varios módulos y desea que se prueben todos (incluso los que dependen del módulo de pruebas fallidas), debe ejecutar mvn clean install -fn.
-faecontinuará con el módulo que tiene una prueba fallida (ejecutará todas las demás pruebas), pero se omitirán todos los módulos que dependen de él.


1
Además, puede agregar -e para que el cmd proporcione información de error.
déspota el

11
Acabo de probar la opción --fail-never. Maven no fallará la compilación incluso si hay errores de compilación. Si uso esta opción en Jenkins, la compilación parece exitosa incluso si tiene muchos errores de compilación. Prefiero -Dmaven.test.failure.ignore=trueen este caso y dejar que Jenkins analice los informes infalibles.
fuemf5

@wlnirvana He editado la publicación ahora con este enlace (así que siéntete libre de eliminar tu comentario ...)
Steve Chambers

93

Acabo de encontrar el parámetro "-fae", que hace que Maven ejecute todas las pruebas y no se detenga en caso de falla.


3
Lamentablemente, este parámetro no funciona cuando lo paso a TeamCity.
ripper234

44
En un proyecto de varios módulos, se omitirán los módulos que dependen del módulo que ha fallado las pruebas. Use -fn en su lugar.
hipokito

2
@ ripper234 ¿encontraste una manera de hacerlo funcionar en TeamCity?
Jeredriq Demas

86

¿Puede probar con surefire 2.6 y configurar surefire con testFailureIgnore=true. O en la línea de comando:

mvn install -Dmaven.test.failure.ignore=true

16
IIRC tiene el efecto de que toda la compilación no falla, en lugar de ejecutar todas las pruebas y fallar al final.
Ondra Žižka

1
Esta es la única opción que funcionó para mí ... La opción "-fae" no hizo nada en las fallas de prueba
Yoi

38

Intente agregar la siguiente configuración para el complemento surefire en su pom.xml del proyecto raíz :

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

17

Una respuesta rapida:

mvn -fn test

Funciona con proyectos anidados.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.