En Maven, ¿es posible mantener las pruebas de integración en una carpeta separada de las pruebas unitarias?
integration-testing maven-failsafe-plugin (1)
En la página de Pruebas de Integración y Maven dice:
El rumor del futuro dice que una versión futura de Maven admitirá algo como src / it / java en la fase de prueba de integración, además de src / test / java en la fase de prueba.
Pero eso fue en 2011-12-11. ¿Ya ha pasado esto?
En esta respuesta a "Ejecutar maven test no en la carpeta src / test / java por defecto", se menciona la configuración de <testSourceDirectory>
, ¿hay alguna forma de hacerlo solo para la prueba de integración (es decir, la fase de integration-test
)?
Estoy buscando usar el complemento Maven FailSafe y evitar cambiar el nombre de un montón de pruebas de integración o usar las categorías experimentales de JUnit.
Puedes poner las TI en diferentes carpetas como esta:
.
|-- pom.xml
`-- src
|-- it
| `-- java
| `-- com
| `-- soebes
| `-- maui
| `-- it
| `-- BitMaskIT.java
|-- main
| `-- java
| `-- com
| `-- soebes
| `-- maui
| `-- it
| `-- BitMask.java
`-- test
`-- java
`-- com
`-- soebes
`-- maui
`-- it
`-- BitMaskTest.java
Se necesita lo siguiente para dar a conocer las carpetas al compilador, etc.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>process-resources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/it/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Se necesita lo siguiente para ejecutar realmente las TI:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.15</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
Esto significa que puede tener la integración dentro del mismo módulo que tiene la desventaja de que la ejecución de las pruebas de integración usa los mismos recursos que las pruebas de unidad. Una solución mejor sería crear un módulo separado de maven donde pueda colocar las pruebas de integración en la carpeta habitual src/test/java
etc. y configurar solo el complemento de maven-failafe.