Travis CI 多模块工程统计覆盖率

看我的工程例子,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

你可能感兴趣的:(Travis CI 多模块工程统计覆盖率)