Maven项目与Jacoco覆盖率插件的集成

【初稿】

前言

 

步骤

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、 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值