For Java, you can use JaCoCo and its Maven plugin. Simply add this to your POM:
 <plugin>  
  <groupId>org.jacoco</groupId>  
  <artifactId>jacoco-maven-plugin</artifactId>  
  <version>0.8.4</version>  
  <executions>  
   <execution>  
    <id>default-prepare-agent</id>  
    <goals>  
     <goal>prepare-agent</goal>  
    </goals>  
   </execution>  
   <execution>  
    <id>ut-report</id>  
    <phase>prepare-package</phase>  
    <goals>  
     <goal>report</goal>  
    </goals>  
   </execution>  
   <execution>  
    <id>it-report</id>  
    <phase>post-integration-test</phase>  
    <goals>  
     <goal>report</goal>  
    </goals>  
   </execution>  
  </executions>  
 </plugin>  
which will bind the execution to the unit test (prepare-package) AND integration test phase (post-integration-test), generating the report at the end of both phases in folder target/site/jacoco. If you skip one of those phases, the report will be incomplete and you might see much lower coverage than expected.
In case you want to exclude a package or a class from the check, you can add this section to the plugin configuration:
  <configuration>  
   <excludes>  
    <exclude>PATH/TO/PACKAGE/**</exclude>  
    <exclude>PATH/TO/PACKAGE/CLASS.class</exclude>  
   </excludes>  
  </configuration>  
You can also fail the build if the coverage is below a certain threshold you define, but I suggest activating this only when you are confident your setup is stable and doesn't annoy too many people.
 
 
No comments:
Post a Comment
With great power comes great responsibility