es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Omitiendo la compilación de pruebas de integración cuando las pruebas unitarias fallaron en Maven.

¿Existe alguna manera de omitir la compilación de las pruebas de integración cuando las pruebas unitarias fallan? Es decir, compilar (y ejecutar) las pruebas de integración solo en caso de que todas las pruebas unitarias hayan pasado.

Estoy usando los complementos Maven Surefire y Failsafe.

EDITO:
Llamo a Maven usando los siguientes objetivos: “mvn clean test integration-test -fae”.

Probé con “verify”, mismo problema.

El ciclo de vida predeterminado compila tanto las pruebas unitarias como las pruebas de integración en la fase de “testCompile”, antes de ejecutar las pruebas unitarias. Necesitaría compilar las pruebas de integración después de ejecutar las pruebas unitarias y solo si las pruebas unitarias pasaron exitosamente.

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no hay una forma incorporada de omitir la compilación de pruebas de integración cuando las pruebas unitarias fallan utilizando solo los complementos maven-surefire y maven-failsafe. Ambos complementos se ejecutan en la fase de “test” y no se pueden configurar para que se ejecuten solo después de que las pruebas unitarias hayan pasado.

    Una solución alternativa podría ser utilizar un perfil personalizado en tu pom.xml que ejecute las pruebas de integración solo si las pruebas unitarias pasan. Esto se puede lograr configurando el maven-failsafe-plugin para que se vincule a una fase posterior (por ejemplo, “verify”) y utilizando la propiedad del sistema maven.test.failure.ignore para omitir el complemento si falla alguna prueba unitaria.

    Aquí tienes un ejemplo de configuración de pom.xml que logra esto:

    <profiles>
      <profile>
        <id>run-integration-tests</id>
        <activation>
          <property>
            <name>run-integration-tests</name>
            <value>true</value>
          </property>
        </activation>
        <build>
          <plugins>
            <plugin>
              <groupid>org.apache.maven.plugins</groupid>
              <artifactid>maven-failsafe-plugin</artifactid>
              <version>3.0.0-M5</version>
              <executions>
                <execution>
                  <id>integration-test</id>
                  <phase>verify</phase>
                  <goals>
                    <goal>integration-test</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </build>
      </profile>
    </profiles>
    
    <properties>
      <maven.test.failure.ignore>false</maven.test.failure.ignore>
    </properties>
    

    Con esta configuración, puedes ejecutar las pruebas unitarias y omitir las pruebas de integración si alguna de ellas falla utilizando:

    mvn clean verify
    

    Y puedes ejecutar tanto las pruebas unitarias como las de integración si todas las pruebas unitarias pasan utilizando:

    mvn clean test -Prun-integration-tests
    

    Ten en cuenta que la bandera -fae ya no es necesaria, ya que las pruebas de integración solo se ejecutarán si todas las pruebas unitarias pasan.

Comments are closed.