看我的工程例子,DEMO工程參見:coverage-across-modules-demo
+parent
|--core
|--api
|--spi
|--test
|--test-common
|--test-integration
API 和 SPI 下都有單測(cè)锥忿,但是一些測(cè)試用例既用到 API 和 SPI 的地方牛郑,就放到 test-integration 模塊下。
本來(lái)是要 Travis CI + coveralls + codecov 統(tǒng)計(jì)工程代碼覆蓋率的敬鬓,
<plugin>
<groupId>org.eluder.coveralls</groupId>
<artifactId>coveralls-maven-plugin</artifactId>
<version>3.2.1</version>
</plugin>
# .travis.yml
after_success:
- bash <(curl -s https://codecov.io/bash)
但是發(fā)現(xiàn)覆蓋率統(tǒng)計(jì)不對(duì)淹朋,原因是 test-integration 里的測(cè)試用例,沒有 API 和 SPI 的源碼钉答,根部不納入覆蓋率統(tǒng)計(jì)础芍。
網(wǎng)上也有不少例子,但是都比較麻煩数尿。
后來(lái)發(fā)現(xiàn) jacoco 默認(rèn)支持這個(gè)功能仑性,那就是 jacoco 0.7.7 的一個(gè)新特性 report-aggregate
使用方式如下:DEMO工程參見:coverage-across-modules-demo
第一步:在主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
即可窥岩。這時(shí)候執(zhí)行 test-integration 測(cè)試用例的時(shí)候,就會(huì)自動(dòng)找到依賴工程的源碼朦乏,并計(jì)算覆蓋率。
附:DEMO工程參見:coverage-across-modules-demo