在Android Project with Gradle中使用JaCoCo

kninwzqo  于 2023-04-30  发布在  Android
关注(0)|答案(2)|浏览(220)

我有一个Android项目与Gradle 5.1.1我想使用JaCoCo生成关于测试代码覆盖率的HTML报告。我试着按照一些文章中的说明去做,但所有的尝试都导致了错误。
所有为我工作的是应用插件'jacoco'(项目成功构建后)。

apply plugin: 'jacoco'

但是当我添加任务“jacocoTestReport”时,Gradle无法与文件同步,我得到了这个错误。
这就是我的任务

jacocoTestReport {
reports {
    html.enabled true
    xml.enabled false
    csv.enabled false
    html.destination file("${buildDir}/jacocoHtml")
}}

这是我的错误:

ERROR: Could not find method jacocoTestReport() for arguments [build_8kqk7qvpoocfxfydulk1p4m35$_run_closure3@1aba12a5] on project ':app' of type org.gradle.api.Project.

我尝试在'build'中添加“apply plugin”后使用“gradlew clean build”。gradle '.教程的作者成功地添加了任务,并在终端中使用这一行来获取jacoco报告:

gradlew build jacocoTestReport

下面是我用来了解如何将Jacoco添加到Project中的文章的链接:
https://reflectoring.io/jacoco/
https://android.jlelse.eu/get-beautiful-coverage-reports-in-your-android-projects-ce9ba281507f
所以我的问题是有没有一种方法将Jacoco添加到Android Project与Gradle?我做错了什么?

nimxete2

nimxete21#

可能只是一个缺失的复制粘贴,但请确保您将函数定义为gradle中的任务,即:任务jacocoTestReport(类型:Jacobo报告,取决于:['testDebugUnitTest']){
我在最初的项目中关注了这个博客来设置我的Jacoco示例,发现它很有帮助。https://engineering.rallyhealth.com/android/code-coverage/testing/2018/06/04/android-code-coverage.html

uklbhaso

uklbhaso2#

plugins {
    id 'jacoco'
}

buildTypes {
    debug {
        testCoverageEnabled true
    }
}

task jacocoTestReport(type: JacocoReport,
    dependsOn: ['testDebugUnitTest']) {

reports.html.enabled = true

def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']

def mainSrc = "$project.projectDir/src/main/java"
sourceDirectories.from = files([mainSrc])

def javaTree = fileTree(dir: "$project.buildDir/intermediates/javac/debug/classes", excludes: fileFilter)
def kotlinTree = fileTree(dir: "$project.buildDir/tmp/kotlin-classes/debug", excludes: fileFilter)
classDirectories.from = files([javaTree, kotlinTree])

executionData.from = fileTree(dir: "$buildDir", includes: [
        "outputs/unit_test_code_coverage/debugUnitTest/testDebugUnitTest.exec",
        "outputs/code-coverage/debugAndroidTest/connected/*/coverage.ec"])

}

相关问题