plugin coverage maven-2 integration-testing cobertura

maven-2 - plugin - coverage java maven



Ejecutando pruebas de integraciĆ³n con el complemento Cobertura Maven (6)

Descubrí que usar la extensión maven-antrun-plugin para proyectos de múltiples módulos, incluidas las pruebas de integración y UI, es la mejor solución. Usé este post para bajar los goles de Ant y me fui de allí. Ahora tenemos informes de cobertura de código por módulo y uno combinado que contiene cobertura de todas las pruebas.

Tengo problemas para que el complemento Cobertura ejecute pruebas de integración en Maven. La respuesta más cercana a esta pregunta que he encontrado es http://jira.codehaus.org/browse/MCOBERTURA-86 . Sin embargo, el problema sigue siendo un error abierto. Probé la configuración sugerida por Stevo el 03 / Apr / 09, no funcionó.

Mi pom

<reporting> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.3-SNAPSHOT</version> <reportSets> <reportSet> <reports> <report>cobertura-integration</report> </reports> </reportSet> </reportSets> </plugin> </plugins> </reporting>

que por cierto es exactamente el mismo que el fragmento de configuración proporcionado por Stevo.


Después de algunas investigaciones, se encontró una configuración de trabajo en http://jira.codehaus.org/browse/MCOBERTURA-86 Asegúrese de invocar esto con

mvn clean deploy -PbuildWithIntegrationTestCoverage <profile> <!-- Build with IntegrationTestcoverage => instrument classes with cobertura before integrationtests starts. --> <id>buildWithIntegrationTestCoverage</id> <activation> <property> <name>buildWithIntegrationTestCoverage</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.2</version> <executions> <execution> <id>instrument-classes</id> <phase>package</phase> <goals> <goal>instrument</goal> </goals> </execution> </executions> </plugin> <!-- Add cobertura as dependency to the jetty-plugin (required for instrumented classes) --> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <dependencies> <dependency> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.2</version> <type>jar</type> </dependency> </dependencies> </plugin> </plugins> </build> </profile>


En mi opinión, el plugin de cobertura maven tiene dos grandes desventajas. No tiene un objetivo único de informe , todas las pruebas de unidad se ejecutarán al lado de surefire nuevamente. Crea la cobertura de código solo para pruebas unitarias .

Estoy usando el complemento JaCoCo maven ahora. JaCoCo reutiliza los informes surefire y / o failafe para crear una cobertura de código desde la unidad y / o prueba de integración. Además, JaCoCo tiene una buena integración con Jenkins . Aquí hay un ejemplo en el que JaCoCo usa pruebas unitarias de prueba segura y pruebas de integración a prueba de fallas.

<build> <plugins> <!-- Unit tests --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> </plugin> <!-- Integration tests --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.16</version> <executions> <execution> <phase>integration-test</phase> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin> <!-- The JaCoCo plugin generates a report about the test coverage. In contrast to the cobertura plugin JaCoCo can be configured to generate code coverage for integration tests. Another advantage of JaCoCo is that it reports only, cobertura executes all unit tests again (beside the surefire plugin). --> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.6.4.201312101107</version> <executions> <execution> <id>jacoco-prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>jacoco-prepare-agent-integration</id> <goals> <goal>prepare-agent-integration</goal> </goals> </execution> <execution> <id>jacoco-report</id> <goals> <goal>report</goal> </goals> </execution> <execution> <id>jacoco-integration</id> <goals> <goal>report-integration</goal> </goals> </execution> <execution> <id>jacoco-check</id> <goals> <goal>check</goal> </goals> <configuration> <rules /> </configuration> </execution> </executions> </plugin> </plugins> </build>


Intenta configurar una fase de ejecución para ese plugin como

<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.1</version> <configuration> <formats> <format>xml</format> </formats> </configuration> <executions> <execution> <id>cobertura-check</id> <phase>verify</phase> <goals> <goal>cobertura</goal> </goals> </execution> </executions> </plugin>

De esa manera funciona como un encanto para mí.


Obtuve las pruebas de integración que funcionan con Maven 3.0.3 y cobertura-maven-plugin 2.5.1 configurando el complemento de maven-failafe para que se ejecute durante la fase de test :

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.12</version> <executions> <execution> <phase>test</phase> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin>


Para cualquier persona que tropiece con esta pregunta a través de Google, cobertura-maven-plugin comenzó a respaldar las pruebas de integración en la versión 2.7 , que se publicó en 2015.

Citando su página web:

Hasta la versión 2.6 solo había un informe disponible: cobertura, que le proporcionaba un informe de cobertura para sus pruebas de unidad. Como solo había uno, no tenía que configurarlo de ninguna manera.

A partir de la versión 2.7, se agregó un nuevo informe: cobertura-integration-test, que le brinda un informe de cobertura para sus pruebas de integración. [..]

Ambos informes están habilitados por defecto. Si desea el comportamiento anterior con solo un informe de cobertura para sus pruebas de unidad, necesita configurar el complemento ...

Si usted, como yo lo hice, ejecuta el informe de cobertura usando mvn cobertura:cobertura , necesitará hacer mvn cobertura:cobertura-integration-test para obtener pruebas de integración también. Puedes consultar los detalles desde su página de manual .