Jenkins插件jacoco代码覆盖率并不考虑报告

时间:2016-10-14 20:42:42

标签: java jenkins gradle jacoco

以下是我的build.gradle的一部分,我已将其配置为从代码覆盖范围中排除类。

test {
    jacoco {
        append = false        
        destinationFile = file("$buildDir/reports/jacoco/jacoco.exec")           
    }   
    finalizedBy jacocoTestReport 
}
jacocoTestReport {
    reports {
        xml {
            enabled true 
        }
        html {
            enabled true
        }
    }

    afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: ['**/*DAO*.*'])
        })
    }
}

这里我想在我的项目中排除DAO类,因为我正在嘲笑这些类,我计划在数据库测试用例中覆盖它们与单元测试不同。

当我在命令下运行时:  gradle jacocoTestReport

它会生成代码覆盖率报告,从代码覆盖率中排除这些类, $ {PROJECT_DIR} \建立\报告\ jacoco \测试\ HTML \ index.html的

作为一个原因,我通过以下方式将其排除在gradle构建之外:

 afterEvaluate {
        classDirectories = files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: ['**/*DAO*.*'])
        })
    }

但是当Jenkins构建项目时,jenkins生成的代码覆盖率报告并未考虑此设置,并且jenkins生成的报告包括覆盖率报告中的那些类。

我尝试过的另一项工作是修改'构建后操作'适用于jenkins的jacoco插件 我已在Exclusions (e.g.: **/*DAO*.*)文本字段下设置了我的模式,这工作正常,测试用例被排除在代码覆盖范围之外。

但我想知道有什么方法可以避免配置jenkins来指定排除模式并使用gradle jacocoTestReport在jenkins上生成的报告,因为这个redudant因为我在build.gradle中指定它并且如果我必须在jenkins上创建多个分支然后它也是一种维护。

根据以下帖子,此问题尚未解决 https://issues.jenkins-ci.org/browse/JENKINS-15570

有人对此有所了解吗?

注意:我的Jacoco版本是:

jacoco {
    toolVersion = "0.7.6.201602180812"
}

和jenkins上的Jacoco插件版本是:

2.0.1

0 个答案:

没有答案