jacoco代码覆盖率配置的maven配置

本文介绍了如何在Maven项目中配置Jacoco以计算代码覆盖率,特别是当项目包含多个子项目时。基本配置中,Surefire插件针对特定测试类运行,而Jacoco绑定到`mvn test`目标,关注`com/jd/feima/TestService*`类的覆盖率。在处理包含子项目的配置时,子项目可以继承父工程的plugin设置,同时通过Surefire的匹配模式限制测试类,并在每个子项目的`target/`目录下存放Jacoco覆盖率报告。

基本配置

<plugins>
..............
..............
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                    <includes>
                        <include>**/TestServiceTest.java</include>
                    </includes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.1</version>
                <configuration>
                    <includes>
                        <include>com/jd/feima/TestService*</include>
                    </includes>
                    <destFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</destFile>
                    <dataFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</dataFile>
                </configuration>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-site</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
............
............
</plugins>

其中:

surefire指定跑 ‘**/TestServiceTest.java’

surefire插件的路径与文件名匹配参考:

surefire插件匹配模式参考

jacoco计算 相对 ‘target/classes’下面的 ‘com/jd/feima/TestService*’ 类的测试覆盖率。

而且jacoco绑定到mvn的test goal。

 

包含子项目的配置

最近的一个项目是一个父工程下面包含多个子工程的项目结构。

-|-com-product-project

    -|- common

    -|- service

    -|- manager

    -|- web

我们知道子工程会自动继承父工程POM里面的dependency与plugin设置。

该工程中作为共通插件,surefire与jacoco与compiler一样是配置在父工程中的。

那么子工程如何既继承父工程的plugin又个性化路径,测试类之类的配置?

下面是我配置的例子:

<plugins>
.........
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                    <!-- 只运行以NewTest结尾的测试 -->
                    <includes>
                        <include>**/*NewTest.java</include>
                    </includes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.1</version>
                <configuration>
                    <destFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</destFile>
                    <dataFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</dataFile>
                </configuration>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-site</id>
                        <phase>test</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
.......
</plugins>

surefire插件:

**/*NewTest.java : 将要执行的测试类限定为NewTest结尾的类。

jacoco

${project.build.directory} : 每个项目的target/ 目录下放jacoco的覆盖率配置文件以及测试报告

${project.build.directory} 是maven自带的环境变量,我们无需配置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值