I have below pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<configuration>
<!-- Sets the VM argument line used when unit tests are run. -->
<argLine>-Xms512m -Xmx1024m -XX:MaxPermSize=512m ${jacoco.agent.argLine}</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
<configuration>
<dataFile>target/jacoco.exec</dataFile>
</configuration>
<executions>
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>jacoco.agent.argLine</propertyName>
<destFile>target/jacoco.exec</destFile>
</configuration>
</execution>
<execution>
<id>default-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
I am using maven-compiler-plugin v2.5.1
when I am doing clean test from Eclipse it creates the target/jacoco.exec file, once it it created I run it with jacoco:report
and it creates the report as well. But the report shows all the packages with 0% code coverage except one package.
When I run the report for the same set of classes using cobertura it is showing us the code coverage correctly.
What might be the issue here?
Adding my maven log:
[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Adaptive Payment Platrom Core 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ app-core ---
[INFO] Deleting C:\Users\SHANK030\git\AdaptivePaymentPlatform\APP_Core\target
[INFO]
[INFO] --- jacoco-maven-plugin:0.7.5.201505241946:prepare-agent (pre-unit-test) @ app-core ---
[INFO] jacoco.agent.argLine set to -javaagent:C:\\Users\\SHANK030\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.7.5.201505241946\\org.jacoco.agent-0.7.5.201505241946-runtime.jar=destfile=C:\\Users\\SHANK030\\git\\AdaptivePaymentPlatform\\APP_Core\\target\\jacoco.exec,excludes=com/wdpr/payment/data/vo/*.class:com/wdpr/payment/data/mapper/*.class:com/wdpr/payment/helper/provider/AbstractInitializer.class:com/wdpr/payment/helper/provider/Agent.class:com/wdpr/payment/helper/provider/AgentException.class:com/wdpr/payment/helper/provider/AgentFactory.class:com/wdpr/payment/helper/provider/CachedProperties.class:com/wdpr/payment/helper/provider/CachedPropertiesListener.class:com/wdpr/payment/helper/provider/ConnectionPoolAgent.class:com/wdpr/payment/helper/provider/ConnectionPoolUtility.class:com/wdpr/payment/helper/provider/FixedLengthFieldMessage.class:com/wdpr/payment/helper/provider/InitializerSampleImpl.class:com/wdpr/payment/helper/provider/Loader.class:com/wdpr/payment/helper/provider/PropertyHelper.class:com/wdpr/payment/helper/provider/Provider.class:com/wdpr/payment/helper/provider/StratusAck.class:com/wdpr/payment/helper/provider/StratusAuthReq.class:com/wdpr/payment/helper/provider/StratusAuthRsp.class:com/wdpr/payment/helper/provider/StratusConnection.class:com/wdpr/payment/helper/provider/StratusConnectionMgr.class:com/wdpr/payment/helper/provider/StratusConnectionReader.class:com/wdpr/payment/helper/provider/StratusConnectionUtility.class:com/wdpr/payment/helper/provider/StratusFormatException.class:com/wdpr/payment/helper/provider/StratusHeartbeat.class:com/wdpr/payment/helper/provider/StratusMessage.class:com/wdpr/payment/helper/provider/StratusShutdown.class:com/wdpr/payment/helper/provider/StratusStartup.class:com/wdpr/payment/helper/provider/StratusUtility.class:com/wdpr/payment/helper/provider/StratusWebServiceProvider.class:com/wdpr/payment/helper/provider/Timer.class:com/wdpr/payment/helper/provider/WrappedException.class:com/wdpr/payment/helper/outbound/*.class
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ app-core ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 30 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ app-core ---
[INFO] Compiling 129 source files to C:\Users\SHANK030\git\AdaptivePaymentPlatform\APP_Core\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ app-core ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ app-core ---
[INFO] Compiling 71 source files to C:\Users\SHANK030\git\AdaptivePaymentPlatform\APP_Core\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.18:test (default-test) @ app-core ---
[INFO] Surefire report directory: C:\Users\SHANK030\git\AdaptivePaymentPlatform\APP_Core\target\surefire-reports
UPDATE
Adding the another maven log... this is after the test cases are run
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ app-core ---
[INFO] Building jar: C:\Users\SHANK030\git\AdaptivePaymentPlatform\APP_Core\target\appCore.jar
[INFO]
[INFO] --- jacoco-maven-plugin:0.7.5.201505241946:report (default-report) @ app-core ---
[INFO] Analyzed bundle 'Adaptive Payment Platrom Core' with 68 classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:08 min
[INFO] Finished at: 2015-06-04T15:28:28-05:00
[INFO] Final Memory: 51M/594M
[INFO] ------------------------------------------------------------------------
I am using powermock in my application which does not play well with the online instrumentation performed by JaCoCo. so using the offline instrumentation and excluding some clousure classes it worked for me.
I am running the job using mvn clean verify install, below is the changed snippet of my pom.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<executions>
<execution>
<id>default-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<systemPropertyVariables>
<jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
</systemPropertyVariables>
<forkMode>once</forkMode>
<argLine>-Xms1024m -Xmx2048m -XX:MaxPermSize=1024m</argLine>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>**/StratusAuthTemplateProviderTest.class</exclude>
<exclude>**/StratusBalanceInquiryTemplateProviderTest.class</exclude>
<exclude>**/PersistCardAuthDetailsForRefundProcessorTest.class</exclude>
<exclude>**/PersistCardTxnDetailsProcessorTest.class</exclude>
<exclude>**/StratusAuthProcessorTest.class</exclude>
<exclude>**/UpdateTxnStatusTest.class</exclude>
<exclude>**/RulesTest.class</exclude>
<exclude>**/SampleRulesTest.class</exclude>
<exclude>**/RefundUpdatePmtTxnConfirmationProcessorTest.class</exclude>
<exclude>**/vo/*.class</exclude>
<exclude>**/outbound/*.class</exclude>
<exclude>**/notification/*.class</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.4.201502262128</version>
<configuration>
<excludes>
<exclude>com/wdpr/payment/data/mapper/*.class</exclude>
<exclude>**/*AjcClosure?.class</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>default-instrument</id>
<goals>
<goal>instrument</goal>
</goals>
</execution>
<execution>
<id>default-restore-instrumented-classes</id>
<goals>
<goal>restore-instrumented-classes</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>default-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule>
<element>METHOD</element>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
Change your jacoco plugin config to
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
<configuration>
<dataFile>target/jacoco.exec</dataFile>
</configuration>
<executions>
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>jacoco.agent.argLine</propertyName>
<destFile>target/jacoco.exec</destFile>
</configuration>
</execution>
<execution>
<id>default-report</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
and then invoke mvn verify
Check also the output of maven, it will hint you whether jacoco was executed within your tests.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With