Tengo un proyecto de módulo múltiple maven2 y en cada uno de mis módulos secundarios tengo pruebas JUnit que se nombran Test.java
y Integration.java
para pruebas unitarias y pruebas de integración respectivamente. Cuando ejecuto:
mvn test
*Test.java
Se ejecutan todas las pruebas JUnit dentro de los módulos secundarios. Cuando ejecuto
mvn test -Dtest=**/*Integration
ninguna de las Integration.java
pruebas se ejecuta dentro de los módulos secundarios.
Estos parecen ser exactamente el mismo comando para mí, pero el que tiene -Dtest = / * Integration ** no funciona, muestra 0 pruebas que se ejecutan en el nivel principal, que no hay ninguna prueba
Respuestas:
Puede configurar Surefire de Maven para ejecutar pruebas unitarias y pruebas de integración por separado. En la fase de prueba unitaria estándar, ejecuta todo lo que no coincide con el patrón de una prueba de integración. Luego crea una segunda fase de prueba que ejecuta solo las pruebas de integración.
Aquí hay un ejemplo:
fuente
El ciclo de vida de construcción de Maven ahora incluye la fase de "prueba de integración" para ejecutar pruebas de integración, que se ejecutan por separado de las pruebas unitarias ejecutadas durante la fase de "prueba". Se ejecuta después de "paquete", por lo que si ejecuta "mvn verificar", "mvn install" o "mvn deploy", las pruebas de integración se ejecutarán en el camino.
Por defecto, la integración de la prueba se ejecuta clases de prueba mencionados
**/IT*.java
,**/*IT.java
y**/*ITCase.java
, pero esto se puede configurar.Para obtener detalles sobre cómo conectar todo esto, consulte el complemento Failsafe , la página de uso de Failsafe (no está correctamente vinculada desde la página anterior mientras escribo esto), y también consulte esta publicación del blog de Sonatype .
fuente
mvn integration-test
también ejecuta pruebas unitarias (usando via surefire) peromvn failsafe:integration-test
solo ejecuta las pruebas de integración a prueba de fallas.package
fase, eso significa que debería poner todo mi código fuente de Java IT ensrc/main/java
lugar desrc/test/java
¿correcto?He hecho EXACTAMENTE lo que quieres hacer y funciona muy bien. Las pruebas unitarias "* Pruebas" siempre se ejecutan, y "* IntegrationTests" solo se ejecutan cuando se realiza una verificación o instalación de mvn. Aquí está el fragmento de mi POM. serg10 casi lo hizo bien ... pero no del todo.
¡Buena suerte!
fuente
clean compile integration-test -Dmaven.test.failure.ignore=false
Puede dividirlos muy fácilmente usando las categorías JUnit y Maven.
Esto se muestra muy, muy brevemente a continuación dividiendo la unidad y las pruebas de integración.
Definir una interfaz de marcador
El primer paso para agrupar una prueba usando categorías es crear una interfaz de marcador.Esta interfaz se utilizará para marcar todas las pruebas que desea ejecutar como pruebas de integración.
Marque sus clases de prueba
Agregue la anotación de categoría a la parte superior de su clase de prueba. Toma el nombre de su nueva interfaz.
Configurar las pruebas de la unidad Maven
La belleza de esta solución es que nada cambia realmente para el lado de las pruebas unitarias.Simplemente agregamos un poco de configuración al plugin maven surefire para que ignore cualquier prueba de integración.
Cuando haces un
mvn clean test
, solo se ejecutarán las pruebas unitarias sin marcar.Configurar las pruebas de integración de Maven
Nuevamente, la configuración para esto es muy simple.Utilizamos el complemento a prueba de fallos estándar y lo configuramos para ejecutar solo las pruebas de integración.
La configuración utiliza un objetivo de ejecución estándar para ejecutar el complemento a prueba de fallos durante la fase de prueba de integración de la compilación.
Ahora puedes hacer un
mvn clean install
.Esta vez, además de las pruebas unitarias en ejecución, las pruebas de integración se ejecutan durante la fase de prueba de integración.
fuente
Deberías intentar usar el complemento maven failsafe . Puede decirle que incluya un cierto conjunto de pruebas.
fuente
maven-failsafe-plugin
ha ido a Plugin Graveyardfailsafe
complemento ha sido movidomaven-failsafe-plugin
. Parece quemaven-failsafe-plugin
todavía está activo (los documentos se enviaron por última vez en marzo de 2014).Por defecto, Maven solo ejecuta pruebas que tienen Test en algún lugar del nombre de la clase.
Cambie el nombre a IntegrationTest y probablemente funcionará.
Alternativamente, puede cambiar la configuración de Maven para incluir ese archivo, pero probablemente sea más fácil y mejor solo nombrar sus pruebas SomethingTest.
De inclusiones y exclusiones de pruebas :
fuente
Otra forma de ejecutar pruebas de integración con Maven es hacer uso de la función de perfil:
Al ejecutar 'mvn clean install' se ejecutará la compilación predeterminada. Como se especificó anteriormente, las pruebas de integración serán ignoradas. La ejecución de 'mvn clean install -P Integration-tests' incluirá las pruebas de integración (también ignoro mis pruebas de integración por etapas). Además, tengo un servidor CI que ejecuta mis pruebas de integración todas las noches y para eso emito el comando 'mvn test -P Integration-tests' .
fuente
Puede seguir la documentación de Maven para ejecutar las pruebas unitarias con la compilación y ejecutar las pruebas de integración por separado.
Esto le permitirá ejecutar con todas las pruebas de integración deshabilitadas de forma predeterminada. Para ejecutarlos, usa este comando:
fuente
Debe usar el complemento maven surefire para ejecutar pruebas unitarias y el complemento maven failsafe para ejecutar pruebas de integración.
Siga a continuación si desea alternar la ejecución de estas pruebas con banderas.
Configuración Maven
Por lo tanto, las pruebas se omitirán o cambiarán de acuerdo con las siguientes reglas de bandera:
Las pruebas se pueden omitir con los siguientes indicadores:
-DskipTests
omite las pruebas unitarias y de integración-DskipUnitTests
omite pruebas unitarias pero ejecuta pruebas de integración-DskipIntegrationTests
se saltea las pruebas de integración pero ejecuta pruebas unitariasEjecutando pruebas
Ejecute a continuación para ejecutar solo pruebas unitarias
Puede ejecutar el siguiente comando para ejecutar las pruebas (tanto la unidad como la integración)
Para ejecutar solo pruebas de integración, siga
O saltear pruebas unitarias
Además, para omitir las pruebas de integración durante
mvn install
, sigaPuedes saltarte todas las pruebas usando
fuente