IDEA有自己的coverage但是检测的不够全面,jacoco强调按照自己的规则来控制测试覆盖率
本文采取的是maven的jacoco插件,目的为了防止覆盖率过低,当不能通过jacoco检测(自己可以设置项目覆盖率)就不能打包。
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
<executions>
//在unit测试之前
<execution>
<id>pre-unit-tests</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<!-- Sets the path to the file which contains the execution data. -->
<destFile>${project.testresult.directory}/coverage/jacoco/jacoco.exec</destFile>
</configuration>
</execution>
//执行检查
<execution>
<id>check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
<!-- Ensures that the code coverage report for unit tests is created after unit tests have been run -->
//导出报告
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${project.testresult.directory}/coverage/jacoco/jacoco.exec</dataFile>
//生成的测试报告位置
<outputDirectory>${project.testresult.directory}/coverage/jacoco</outputDirectory>
</configuration>
</execution>
</executions>
<configuration>
<destFile>${project.testresult.directory}/coverage/jacoco/jacoco.exec</destFile>
<dataFile>${project.testresult.directory}/coverage/jacoco/jacoco.exec</dataFile>
<rules>
<rule>
<element>BUNDLE</element>
//排除不需要啊检测的包,但是但是一直没生效,我现在都不知道原因,我照着官网搞的啊。放在limit里面也没用
<excludes>
<exclude>com.jnc.api.domain.entity</exclude>
<exclude>com.jnc.api.domain.repository</exclude>
</excludes>
<limits>
<limit>
<counter>COMPLEXITY</counter>
<value>COVEREDRATIO</value>
//最低覆盖率
<minimum>0.2</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</plugin>