【问题标题】:Unable to Exclude generated classes from kotlin jacoco test coverage无法从 kotlin jacoco 测试覆盖率中排除生成的类
【发布时间】:2019-05-02 21:27:53
【问题描述】:

我正在尝试从 jacoco 覆盖率报告中排除一些生成的类。使用 groovy 可以正常工作,但在转换为 Kotlin 后就无法正常工作了

tasks.withType<JacocoCoverageVerification> {
afterEvaluate {
     files(classDirectories.files.forEach() {
        fileTree(it).apply {
            exclude("com/generate/**")
        }
    })
}
violationRules {
    rule {
        limit {
            minimum = BigDecimal(0.30)
        }

    }

}

}

tasks.getByName("check")
.dependsOn(tasks.getByName("jacocoTestCoverageVerification"))

但违规规则运行良好。

【问题讨论】:

    标签: kotlin build.gradle


    【解决方案1】:

    这是jacoco pluginkotlin 的限制。由于classDirectories 不是最终的,我们不能使用旧方法。我们需要使用classDirectories.setFrom的方法来设置值。

    tasks.withType<JacocoCoverageVerification> {
        violationRules {
            rule {
                limit {
                    minimum = BigDecimal(0.62)
                }
            }
        }
    
        afterEvaluate {
            classDirectories.setFrom(files(classDirectories.files.map {
                fileTree(it).apply {
                    exclude("com/generate/**")
                }
            }))
        }
    }
    
    tasks.withType<JacocoReport> {
        afterEvaluate {
            classDirectories.setFrom(files(classDirectories.files.map {
                fileTree(it).apply {
                    exclude("com/generate/**")
                }
            }))
        }
    }
    

    【讨论】:

    • 太棒了...一直在寻找答案...这个有效...thx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2013-08-20
    • 2015-08-24
    • 2017-07-23
    相关资源
    最近更新 更多