【初稿】
前言
步骤
1、Maven集成Jacoco和Junit插件。
步骤一:在 pom.xml中引入Jacoco与Junit依赖。
<dependencies>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
步骤二:在构建配置中设置Jacoco规则与引入maven surefire plugin。其中:
1、maven-surefire-plugin:该插件也可以称为测试运行器(Test Runner),它能兼容JUnit 3、JUnit 4以及TestNG,在pom中如不显式配置就会用默认配置。在默认情况下,该插件的test目标会自动执行测试源码路径(默认为src/test/java/)下所有符合一组命名模式的测试类。这组模式为:
默认包含的测试类 | 默认排除的测试类: |
---|---|
**/*Test.java **/Test*.java **/*TestCase.java | **/Abstract*Test.java **/Abstract*TestCase.java |
2、Jacoco规则为(以以下第三点配置为例子):
- 在<configuration>中配置具体生成的jacoco-unit.exec的目录,同步通过<include>指定;
- 在<rules>中配置对应的覆盖率检测规则;
- 在<executions>中配置执行步骤:1)prepare-agent(即构建jacoco-unit.exec);2)check(即根据在<rules>定义的规矩进行检测);3)package(生成覆盖率报告,默认生成在target/site/index.html)
3、最后,提供完整build配置如下:
<build>
<finalName>guns</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
<configuration>
<destFile>target/coverage-reports/jacoco-unit.exec</destFile>
<dataFile>target/coverage-reports/jacoco-unit.exec</dataFile>
<includes>
<include>**/stylefeng/guns/**</include>
<!--<include>**/service/impl/*.class</include>-->
</includes>
<!-- rules里面指定覆盖规则 -->
<rules>
<rule implementation="org.jacoco.maven.RuleConfiguration">
<element>BUNDLE</element>
<limits>
<!-- 指定方法覆盖到50% -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>METHOD</counter>
<value>COVEREDRATIO</value>
<minimum>0.01</minimum>
</limit>
<!-- 指定分支覆盖到50% -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>BRANCH</counter>
<value>COVEREDRATIO</value>
<minimum>0.01</minimum>
</limit>
<!-- 指定类覆盖到100%,不能遗失任何类 -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>CLASS</counter>
<value>MISSEDCOUNT</value>
<maximum>100</maximum>
</limit>
</limits>
</rule>
</rules>
</configuration>
<executions>
<!-- 在maven的initialize阶段,将Jacoco的runtime agent作为VM的一个-->
<!-- 参数 传给被测程序,用于监控JVM中的调用。 -->
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<!--这个check:对代码进行检测,控制项目构建成功还是失败-->
<execution>
<id>check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
<!--这个report:对代码进行检测,然后生成index.html在-->
<!--target/site/index.html 中可以查看检测的详细结果-->
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
2、针对某个Java文件构建相应Junit测试类。
步骤一:编写Junit测试用例,并通过Run with 'XXXXX' coverage运行测试用例;
2、