Saltarse las pruebas con Maven

1. Introducción

Saltarse las pruebas suele ser una mala idea. Sin embargo, hay algunas situaciones en las que podría ser útil, tal vez cuando estamos desarrollando un nuevo código y queremos ejecutar compilaciones intermedias en las que las pruebas no se pasan ni se compilan.

Solo en este tipo de situaciones, podríamos omitir las pruebas para evitar la sobrecarga de compilarlas y ejecutarlas. Por supuesto, tenga en cuenta que no ejecutar pruebas puede llevar a malas prácticas de codificación.

En este tutorial rápido, exploraremos todos los comandos y opciones posibles para omitir las pruebas con Maven .

2. Ciclo de vida de Maven

Antes de entrar en detalles sobre cómo omitir las pruebas, debemos comprender cuándo se compilan o ejecutan las pruebas . En el artículo sobre los objetivos y fases de Maven, profundizamos en el concepto del ciclo de vida de Maven, pero para el propósito de este artículo, es importante saber que Maven puede:

  1. Ignorar pruebas
  2. Compilar pruebas
  3. Ejecutar pruebas

En nuestros ejemplos, usaremos la fase del paquete , que incluye compilar y ejecutar las pruebas. Las opciones exploradas a lo largo de este tutorial pertenecen al complemento Surefire de Maven.

3. Uso de indicadores de línea de comando

3.1. Saltarse la compilación de prueba

Primero, veamos un ejemplo de una prueba que no se compila:

@Test public void thisDoesntCompile() { baeldung; }

Cuando ejecutamos el comando de la línea de comandos:

mvn package

Obtendremos un error:

[INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /Users/baeldung/skip-tests/src/test/java/com/antmordel/skiptests/PowServiceTest.java:[11,9] not a statement [INFO] 1 error

Por lo tanto, exploremos cómo omitir la fase de compilación de las fuentes de la prueba. En Maven, podemos usar la bandera maven.test.skip :

mvn -Dmaven.test.skip package

Como resultado, las fuentes de prueba no se compilan y, por lo tanto, no se ejecutan.

3.2. Omitir la ejecución de la prueba

Como segunda opción, veamos cómo podemos compilar la carpeta de prueba pero omitir el proceso de ejecución . Esto es útil para aquellos casos en los que no cambiamos la firma de los métodos o clases, pero cambiamos la lógica empresarial y, como resultado, rompimos las pruebas. Consideremos un caso de prueba artificial como el siguiente, que siempre fallará:

@Test public void thisTestFails() { fail("This is a failed test case"); }

Como incluimos la instrucción fail () , si ejecutamos la fase del paquete , la compilación fallará con el error:

[ERROR] Failures: [ERROR] PowServiceTest.thisTestFails:16 This is a failed test case [INFO] [ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0

Imaginemos que queremos omitir la ejecución de las pruebas pero aún queremos compilarlas. En este caso, podemos usar la bandera -DskipTests :

mvn -DskipTests package

y la fase de paquete tendrá éxito. Además, en Maven, hay un complemento dedicado para ejecutar pruebas de integración llamado complemento maven a prueba de fallas. Los -DskipTests omitirá la ejecución de ambas pruebas unitarias (de éxito seguro) y pruebas de integración (a prueba de fallos). Para simplemente omitir las pruebas de integración, podemos pasar la propiedad del sistema -DskipITs .

Finalmente, vale la pena mencionar que el indicador ahora obsoleto -Dmaven.test.skip.exec también compilará las clases de prueba pero no las ejecutará.

4. Uso de la configuración de Maven

En el caso de que necesitemos excluir la compilación o ejecución de las pruebas por un período de tiempo más largo, podemos modificar el archivo pom.xml para incluir la configuración adecuada.

4.1. Saltarse la compilación de prueba

Como hicimos en la sección anterior, examinemos cómo podemos evitar compilar la carpeta de prueba. En este caso, usaremos el archivo pom.xml . Agreguemos la siguiente propiedad:

 true 

Tenga en cuenta que podemos anular ese valor agregando la bandera opuesta en la línea de comando :

mvn -Dmaven.test.skip=false package

4.2. Omitir la ejecución de la prueba

Nuevamente, como segundo paso, exploremos cómo podemos construir la carpeta de prueba pero omitir la ejecución de la prueba usando la configuración de Maven. Para hacer eso, tenemos que configurar el complemento Maven Surefire con una propiedad:

 true   org.apache.maven.plugins maven-surefire-plugin 2.22.1  ${tests.skip}  

La propiedad de Maven tests.skip es una propiedad personalizada que definimos previamente. Por lo tanto, podemos anularlo si queremos ejecutar las pruebas:

mvn -Dtests.skip=false package

4. Conclusión

En este tutorial rápido, hemos explorado todas las alternativas que ofrece Maven para omitir la compilación y / o la ejecución de las pruebas.

Revisamos las opciones de la línea de comandos de Maven y las opciones de configuración de Maven.