arquillian-extension-jacoco
arquillian-extension-jacoco copied to clipboard
Arquillian Jacoco Extension
image:https://travis-ci.org/arquillian/arquillian-extension-jacoco.svg?branch=master["Build Status", link="https://travis-ci.org/arquillian/arquillian-extension-jacoco"] image:https://img.shields.io/maven-central/v/org.jboss.arquillian.extension/arquillian-jacoco["Maven Central", link="https://maven-badges.herokuapp.com/maven-central/org.jboss.arquillian.extension/arquillian-jacoco"]
== Arquillian Jacoco Extension
Automagic Remote InContainer Code Coverage
=== Usage
==== Maven default setup
Add the following to your pom.xml:
Set the versions to use:
[source, xml]
...
<version.jacoco>0.8.5</version.jacoco>
<version.arquillian_jacoco>1.1.0</version.arquillian_jacoco>
...
Configure the Jacoco Maven plugin and depend on the Arquillian Jacoco Extension:
[source, xml]
...
jacoco
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.core</artifactId>
${version.jacoco}
test
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-jacoco</artifactId>
${version.arquillian_jacoco}
test
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
${version.jacoco}
prepare-agent
report
prepare-package
report
Activate this profile on command line by using the -P flag:
[source, console]
mvn test -Pjacoco
Please note that prepare-agent
will set a property that is picked up by maven-surefire-plugin
by default
(see https://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html[documentation]).
==== Maven setup with shaded ASM and jacoco-core
JaCoCo requires ASM to work properly. Since ASM is also used by many other libraries like Apache CXF, you might run into version conflicts. + E.g. JBoss EAP 6.4 ships CXF 2.7 which requires ASM 3 but JaCoCo requires ASM 7+.
As a workaround, this extension provides an alternate with-asm
flavour that includes "private" ASM and JaCoCo packages, shaded via maven-shade-plugin
.
You only need a single dependency for this setup: [source, xml]
...
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-jacoco-with-asm</artifactId>
${version.arquillian_jacoco}
test
Please note the absence of the jacoco-core
dependency. This also means that it is not possible to choose a custom JaCoCo version.
==== (Optional) arquillian.xml
This extension can by configured via arquillian.xml
, e.g.:
[source, xml]
...
org.foo.; org.bar.
org.bar.baz.*
true
appendAsmLibrary
will deploy the ASM library (which is used by JaCoCo) to the server. Defaults to true
. +
This can be set to false
in case the container already provides a suitable version of ASM. +
In case the with-asm
flavour is used this property must be set to true
.
==== Sonar
When using the Arquillian Jacoco Extension with Sonar you only need to depend on the Arquillian Jacoco Extension. Sonar will handle the setup of Jacoco for you.