2010-11-13 13 views
182

Tengo un proyecto con varios módulos. Cuando todas las pruebas pasan, la prueba de Maven las ejecuta todas.Hacer que Maven ejecute todas las pruebas, incluso cuando algunas fallan

Cuando fallan las pruebas en el primer módulo, maven no continuará al siguiente proyecto. Tengo testFailureIgnore establecido en true en la configuración Surefire, pero no ayuda.

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

+0

¿Qué versión del experto-segura-plugin? –

+0

@Pascal - SureFire 2.5 – ripper234

Respuesta

81

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

+2

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

+0

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

65

Puedes probar con surefire 2.6 y configurar surefire con testFailureIgnore=true. O en la línea de comandos:

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

IIRC Esto tiene el efecto de que la compilación completa no falla, en lugar de ejecutar todas las pruebas y fallar al final. –

+0

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

29

intenta agregar la siguiente configuración para el plugin de éxito seguro en su pom.xml de raíz del proyecto:

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

De la documentación:

-fae, --fail-at-endFalla la compilación luego; permitir que todos no impactado construye para continuar

-fn, --fail-nevernunca dejan la construcción, independientemente del resultado del proyecto

Así que si usted está probando una módulo que estás a salvo usando -fae.

De lo contrario, si tiene varios módulos, y si desea probarlos todos (incluso los que dependen del módulo de pruebas defectuoso), debe ejecutar mvn clean install -fn.
-fae continuará con el módulo que tiene una prueba de falla (ejecutará todas las otras pruebas), pero se omitirán todos los módulos que dependen de ella.

+1

, además, podría agregar -e para que el cmd proporcione información sobre errores. – despot

12

Una respuesta rápida:

mvn -fn test 

Obras con proyecto anidado construye.

-5

Puedes probar a utilizar el plugin de Maven a prueba de fallos

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <executions> 
     <execution> 
      <configuration> 
      ........ 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
+4

El [Maven Failsafe Plugin] (https://maven.apache.org/surefire/maven-failsafe-plugin/) es un complemento muy similar a Surefire, pero para ejecutar pruebas de integración.Si bien funcionaría continuar si hay pruebas fallidas, está en un punto diferente en el ciclo de vida. – CoverosGene

Cuestiones relacionadas