Paquete Maven / instalar sin prueba (omitir pruebas)

343

Estoy tratando de empaquetar mi proyecto. Pero, ejecuta automáticamente las pruebas anteriores al realizar el empaque. Las pruebas insertan algún contenido en la base de datos. Esto no es lo que quiero, necesito evitar ejecutar pruebas mientras empaqueto la aplicación. ¿Alguien sabe cómo ejecutar el paquete sin prueba?

vks
fuente
13
Una prueba unitaria debe constar de las siguientes 4 fases: inicialización, prueba, verificación y desmontaje. Tal vez debería ajustar sus pruebas y agregar un desmontaje / limpieza acorde de su base de datos o debería usar una instancia de base de datos separada, no empaquetada con su archivo jar, para ejecutar sus pruebas.
Marc-Christian Schulze
Parece que sus pruebas son "pesadas", por lo que no desea ejecutarlas. Pero es una mala práctica. ¿Quizás algunos frameworks como DBUnit pueden ayudarlo? ¿O puede revertir los cambios de la base de datos al final de la prueba?
Mickael Marrache

Respuestas:

574

Corre maven con

mvn package -Dmaven.test.skip=true 
Giorgos Dimtsas
fuente
1
gracias por su respuesta inmediata, estoy corriendo desde eclipse, donde agrego el comando -Dmaven.test.skip = true?
vks
10
Nunca he lanzado mvn desde eclipse, pero en la ventana Ejecutar configuración donde configura los objetivos y perfiles de maven, hay una casilla de verificación 'Omitir prueba'. Tal vez eso haga el truco.
Giorgos Dimtsas
99
de acuerdo con la documentación que omitirá la compilación y la ejecución. Puede usar -DskipTests para simplemente omitir la ejecución. Esta publicación también ofrece algunas advertencias sobre las versiones con las que puede usar cada indicador
JonnyRaa,
1
Muchas gracias, solía hacerlo usando -DskipTestspero ya no funciona, ¿alguna idea de por qué?
sam
77
Tenga en cuenta que la documentación de Maven Surefire Plugin y Maven Failsafe Plugin sugiere que skipTestsse prefiere la configuración a la configuración maven.test.skip.
Filip Bártek el
172

Simplemente proporcione el comando mencionado a continuación que ignorará la ejecución de los casos de prueba,

mvn package -DskipTests
Jayakumar J
fuente
44
para mí esto no funcionaría. Tuve que usar la solución aceptada en su lugar
Sebas
1
-DskipTestsno funcionaba para mí cuando lo usabamvn clean install -DskipTests
Vishrant
1
Está parcialmente bien, ya que no ejecutará la prueba PERO combinará las clases de prueba .....
Antoniossss
Para los seguidores, -DskipTestses lo mismo que -Dmaven.test.skip.exec=true stackoverflow.com/a/21933970/32453 y sí, compila las pruebas y no las ejecuta (mientras -Dmaven.test.skip=trueque no las compila)
rogerdpack
47

puede agregar esta configuración de complemento a su pom si no desea establecer la línea de comando arg:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>
smp7d
fuente
3
Ya no puede ejecutar las pruebas desde la línea de comandos con esta configuración.
Emmanuel Bourg
1
@EmmanuelBourg Eso puede remediarse siguiendo las instrucciones en este ejemplo maven.apache.org/plugins/maven-surefire-plugin/examples/…
smp7d
41

Tenga en cuenta que -Dmaven.test.skip impide que Maven construya el artefacto test-jar.

Si desea omitir las pruebas pero crear artefactos según el uso normal de una compilación:

-Dmaven.test.skip.exec
Chris Beach
fuente
1
Esta fue la respuesta que estaba buscando, funciona bien. Gracias.
Binita Bharati
¿Cómo demonios se supone que debo recordar eso? ¿Por qué no hacer un simple alias obvio y memorable como "skipTests"?
TheRealChx101
32

Si está intentando esto en Windows Powershell, obtendrá este error:

[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...

La razón de esto es que, en Powershell, el " -" tiene un significado especial y está causando problemas con Maven.

La solución es anteponerlo con una marca de retroceso (`), así ...

mvn `-Dmaven.test.skip=true install 

Referencia: http://kuniganotas.wordpress.com/2011/08/12/invalid-task-test-skiptrue-you-must-specify-a-valid-lifecycle-phase/

Rosdi Kasim
fuente
1
Tuve el mismo problema y esto me lo resolvió. Gracias.
nsof
26
<properties>
    <maven.test.skip>true</maven.test.skip>
</properties>

también es una forma de agregar archivos pom

vimal krishna
fuente
18

Puede pasar el maven.test.skipindicador como un argumento JVM para omitir las pruebas en ejecución cuando se ejecuta la fase del paquete (y las anteriores en el ciclo de vida predeterminado):

mvn package -Dmaven.test.skip=true

También puede pasar la skipTestsbandera solo al ejecutable mvn. Si desea incluir esta información en su POM, puede crear un nuevo perfil donde puede configurar el maven-surefire-pluginpara omitir las pruebas .

Vineet Reynolds
fuente
17

Solo tienes que proporcionar

-Dmaven.test.skip

Ya no necesita agregar =true.

Adriaan Koster
fuente
13

En Inllij IDEA también hay una opción para omitir el objetivo de la prueba.

ingrese la descripción de la imagen aquí

Dushmantha
fuente
11

Responde una pregunta vieja y aceptada aquí. Puede agregar esto en su pom.xml si desea evitar pasar el argumento de la línea de comandos todo el tiempo:

  <properties>
    <skipTests>true</skipTests>
  </properties>
anubhava
fuente
10

Puede agregar cualquiera -DskipTestso -Dmaven.test.skip=truecualquier mvncomando para omitir las pruebas. En su caso, sería como a continuación:

mvn package -DskipTests

O

mvn package -Dmaven.test.skip=true
Sahil Chhabra
fuente
4

Las pruebas siempre deben [1] ejecutarse antes del paquete. Si necesita desactivar las pruebas, está haciendo algo mal. En otras palabras, estás tratando de resolver el problema incorrecto. Averigua cuál es realmente tu problema y haz esa pregunta. Parece que está relacionado con la base de datos.

[1] Puede omitir pruebas cuando necesite generar rápidamente un artefacto para uso local de desarrollo, pero en general, crear un artefacto siempre debe seguir una ejecución de prueba exitosa.

Ryan Stewart
fuente
Tengo un problema similar: mis aplicaciones contienen websocket. Cuando ejecuto mvn clean install termino en una serie interminable de pruebas. Antes de forzar el cierre, el proceso llevaba 3 horas y los mensajes impresos eran solo sobre Websocket. ¿Puedes revisar mi problema para ver qué estoy haciendo mal? stackoverflow.com/questions/54614739/…
georgeB
Las reglas siempre tienen excepciones. Si no lo crees, te equivocas.
Jay Sullivan
4

sólo mvn clean install -DskipTests

Ravinda lakshan
fuente
3

Una notación abreviada para hacer pruebas de creación y omisión de Maven sería:

mvn clean install -DskipTests

Sourabh Bhavsar
fuente
2

Para el paquete maven sin infectar la prueba maven:

<properties>
    <maven.test.failure.ignore>true</maven.test.failure.ignore>
</properties>
igonejack
fuente
Gracias, necesitaba exactamente esto hoy.
Sean McMillan
1

Obviamente lo estás haciendo de la manera incorrecta. Las pruebas son una parte importante del preenvasado. No debe ignorarlo ni omitirlo, sino hacerlo de la manera correcta. Intente cambiar la base de datos en la que inserta los datos (como test_db). Puede llevar un tiempo configurarlo. Y para asegurarse de que esta base de datos se pueda usar para siempre, debe eliminar todos los datos al final de las pruebas. JUnit4 tiene anotaciones que lo hacen fácil para usted. Use las anotaciones @Before, @After @Test para los métodos correctos. Necesita pasar algún tiempo en él, ¡pero valdrá la pena!

Ozyman
fuente
99
Creo que la pregunta, así como el deseo de empaquetar sin ejecutar pruebas, es perfectamente válida. No creo que el OP "obviamente lo esté haciendo de manera incorrecta". Diferentes personas y proyectos tienen diferentes necesidades, y estos generalmente no están alineados con la Biblia de Maven o las creencias de varias personas (como usted) sobre cómo debería funcionar el desarrollo de software. Creo que su respuesta sería más apreciada sin su enfoque condescendiente.
Zero3
1

En Intellij, vaya a Ver -> Ventanas de herramientas -> elija Proyectos Maven. En el menú desplegable Lifecyle, haga clic derecho en el paquete -> elija Crear 'su-proyecto [paquete]' ...

Ingrese este valor: package -Dmaven.test.skip=true -f pom.xmlen el campo Línea de comando. Haga clic en Aplicar y aparecerá un menú desplegable Ejecutar configuraciones junto con su comando personalizado creado por Maven.

Patrick Tolentino
fuente
¿Por qué se rechazó esto? Lo uso cada vez que quería construir mi proyecto pero salteando las pruebas
Patrick Tolentino
0

mvn clean install -Dmaven.test.skip=true

funcionó para mí ya que ya -Dskipno funcionaba.

Aggie Jon de 87
fuente
0
mvn package -Dmaven.test.skip=true
mcvkr
fuente
-1

La mejor y más fácil forma de hacerlo, en IntelliJ Idea en la ventana "Proyecto Maven", y simplemente no haga clic en el botón de prueba. Espero haberte ayudado. Tenga un buen día :)

Vladimir
fuente
1
Si hace clic en el paquete, ejecuta las pruebas, que es lo que OP está tratando de evitar
Charlie