看我的工程例子,DEMO工程参见:coverage-across-modules-demo
+parent
|--core
|--api
|--spi
|--test
|--test-common
|--test-integration
API 和 SPI 下都有单测,但是一些测试用例既用到 API 和 SPI 的地方,就放到 test-integration 模块下。
本来是要 Travis CI + coveralls + codecov 统计工程代码覆盖率的,
org.eluder.coveralls
coveralls-maven-plugin
3.2.1
# .travis.yml
after_success:
- bash <(curl -s https://codecov.io/bash)
但是发现覆盖率统计不对,原因是 test-integration 里的测试用例,没有 API 和 SPI 的源码,根部不纳入覆盖率统计。
网上也有不少例子,但是都比较麻烦。
后来发现 jacoco 默认支持这个功能,那就是 jacoco 0.7.7 的一个新特性 report-aggregate
使用方式如下:DEMO工程参见:coverage-across-modules-demo
第一步:在主pom.xml
加入
org.jacoco
jacoco-maven-plugin
0.7.9
default-prepare-agent
prepare-agent
default-report
test
report-aggregate
第二步:在没用源码的工程里加入
依赖 例如在:test/test-integration/pom.xml
里加入
xx
test-common
xx
spi
xx
api
第三步:直接 mvn test
即可。这时候执行 test-integration 测试用例的时候,就会自动找到依赖工程的源码,并计算覆盖率。
附:DEMO工程参见:coverage-across-modules-demo