maven多模块_JaCoCo 配置 Maven 多模块覆盖率测试

首先构建一个多模块的 Maven 项目,项目结构如下:

├── product-service
│   └── pom.xml
├── sum-service
│   └── pom.xml
├── app
│   └── pom.xml
├── pom.xml

其中 product-servicesum-service 表示功能代码,app 负责测试用例的整合。product-servicesum-service 分别包含一个 ProductService 类和 SumService 类,具体代码如下:

// ProductService
public class ProductService {
    public int product(int x, int y) {
        return x * y;
    }
}

// SumService
public class SumService {
    public int sum(int x, int y) {
        return x + y;
    }
}

app 内的测试用例如下:

public class AppTest {
    @Test
    public void shouldCalculateCorrectSumAndProduct() {
        Assert.assertEquals(10, new ProductService().product(2, 5));
        Assert.assertEquals(5, new SumService().sum(2, 3));
    }
}

然后在 root 模块的 pom.xml 文件中配置 JaCoCo 插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.5</version>
            <executions>
                <execution>
                    <id>prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

最后在 app 模块的 pom.xml 文件中配置 JaCoCo 插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
            <configuration>
                <argLine>${argLine} -Xms256m -Xmx2048m</argLine>
                <forkCount>1</forkCount>
                <runOrder>random</runOrder>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.5</version>
            <executions>
                <execution>
                    <id>report-aggregate</id>
                    <phase>test</phase>
                    <goals>
                        <goal>report-aggregate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

此时在 root 模块下执行 mvn test,执行成功后在 app/target/site/jacoco-aggregate 目录下就会生成各个模块的覆盖测试报告:

44c8bfb3dfd94d2a2d5874a64b2e3864.png

完整的代码可参考 GitHub。

参考:

  • Jacoco report aggregation for code coverage
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值