sonar proyecto primeros pasos integracion instalar how ejemplo continua configurar con maven junit4 maven-plugin maven-surefire-plugin maven-failsafe-plugin

proyecto - Pruebas unitarias por separado de Maven y pruebas de integración



jenkins maven (1)

UT = Pruebas unitarias IT = Pruebas de integración. Todas mis clases de prueba de integración están anotadas con @Category (IntegrationTest.class)

Mi meta es:

mvn clean install => ejecuta UT y no IT

mvn clean install -DskipTests = true => no se ejecutan pruebas

mvn clean deploy => ejecuta UT y no IT

mvn clean test => ejecuta UT y no IT

mvn clean verify => ejecuta UT y IT

mvn clean integration-test => ejecuta IT y UT no se ejecutan

mvn clean install deploy => ejecuta UT y no IT

propiedades de pom:

<junit.version>4.12</junit.version> <surefire-plugin.version>2.18.1</surefire-plugin.version> <failsafe-plugin.version>2.18.1</failsafe-plugin.version>

  1. Compilador:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <compilerArgument>-Xlint:all</compilerArgument> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> </plugin>

  2. Pruebas unitarias:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire-plugin.version}</version> <configuration> <excludedGroups>com.xpto.IntegrationTest</excludedGroups> </configuration> </plugin>

  3. Pruebas de integración:

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>${failsafe-plugin.version}</version> <configuration> <groups>com.xpto.IntegrationTest</groups> </configuration> <executions> <execution> <goals> <goal>integration-test</goal> </goals> <configuration> <includes> <include>**/*.class</include> </includes> </configuration> </execution> </executions> </plugin>

Mis resultados son:

mvn clean install => OK

mvn clean install -DskipTests = true => OK

mvn clean deploy => ejecuta UT y no IT

mvn clean test => ok

mvn clean verify => NOK ... solo se ejecutan las UT, pero también se deben ejecutar las TI

mvn clean integration-test => NOK ... UT se ejecutan y no deberían y IT no se ejecutan pero deben ejecutarse

mvn clean install deploy => OK


La solución es la siguiente:

<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.19.1</version> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>${surefire.skip}</skip> </configuration> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>

Esto te permitirá controlar lo que se ejecuta.

ejecutando UT y IT''s:

mvn clean verify

corriendo IT''s pero NO UT''s

mvn clean verify -Dsurefire.skip=true

ejecutando UT pero no de TI

mvn clean verify -DskipITs=true

Debe seguir las convenciones de nomenclatura de los complementos que hacen la vida más fácil.

Convenciones de nomenclatura para maven-surefire-plugin (pruebas unitarias). Convenciones de nomenclatura para maven-failafe-plugin (pruebas de integración).