Skip to content

ujjboy/coverage-across-modules-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

coverage-across-modules-demo

Build Status Coverage Status License

某些工程结构下,我们会将 core 代码和 test 代码分开,例如:

+parent
|--core
    |--api
    |--spi
|--test
    |--test-common
    |--test-integration

如果这个时候我们适用 jacoco 去跑测试覆盖率,你会发现测试覆盖率并不是期望中的值。

这是因为 test 模块没有包含任何 core 源码,所以是无法统计到测试覆盖率的。

这时候我们就需要用到 jacoco 0.7.7 的一个新特性 report-aggregate

使用方式:

第一步:在主pom.xml 加入

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.9</version>
    <executions>
        <execution>
            <id>default-prepare-agent</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>default-report</id>
            <phase>test</phase>
            <goals>
                <goal>report-aggregate</goal>
            </goals>
        </execution>
    </executions>
</plugin>  

第二步:在没用源码的工程里加入 <dependency /> 依赖 例如在:test/test-integration/pom.xml里加入

<dependencies>
    <dependency>
        <groupId>xx</groupId>
        <artifactId>test-common</artifactId>
    </dependency>
    <dependency>
        <groupId>xx</groupId>
        <artifactId>spi</artifactId>
    </dependency>
    <dependency>
        <groupId>xx</groupId>
        <artifactId>api</artifactId>
    </dependency>
<dependencies>

第三步:直接 mvn test 即可。

Releases

No releases published

Packages

No packages published

Languages