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>
其实照着官网的走就可以了。