简体   繁体   English

如何在 Kotlin (Gradle 5) 中构建 jacoco 测试报告任务

[英]How to build jacoco test report task in Kotlin (Gradle 5)

I have this Groovy script that I would like to convert into Kotlin ( build.gradle.kts ).我有这个 Groovy 脚本,我想将其转换为 Kotlin ( build.gradle.kts )。 Can somebody help me out or give me a pointer?有人可以帮助我或给我指点吗?

Groovy (works): Groovy(作品):

    task jacocoTestReport(type: JacocoReport) {
        group = "Reporting"
        description = "Generate Jacoco coverage reports"
        reports {
            xml.enabled = true
            html.enabled = false
            csv.enabled = false
        }
        def fileFilter = ['**/BuildConfig.class', 'src/main/gen/**/*', 'src/main/assets/**/*',]
        def debugTree = fileTree(dir: "${buildDir}/intermediates/javac/debug/classes", excludes: fileFilter)
        def mainSrc = "${project.projectDir}/src/main"
        sourceDirectories = files([mainSrc])
        classDirectories = files([debugTree])
        executionData = fileTree(dir: project.projectDir, includes: ['**/**/*.exec', '**/**/*.ec'])
    }

Kotlin (my failed attempt, does not work): Kotlin(我失败的尝试,不起作用):

    tasks.register("jacocoTestReport", JacocoReport::class) {
        group = "Reporting"
        description = "Generate Jacoco coverage reports"

        this.reports.csv.setEnabled(false)
        this.reports.html.setEnabled(false)
        this.reports.xml.setEnabled(true)
        val debugTree = fileTree("${buildDir}/intermediates/javac/debug/classes").filter { file ->
            return@filter file.absolutePath.startsWith("src/main/gen/") ||
                    file.absolutePath.startsWith("src/main/assets/") ||
                    file.absoluteFile.endsWith("BuildConfig.class")
        }
        val mainSrc = "${project.projectDir}/src/main"
        sourceDirectories.setFrom(files(mainSrc))
        classDirectories.setFrom(files(debugTree))
        val executionTree = fileTree(project.projectDir).filter { file ->
            return@filter !(file.absoluteFile.endsWith(".exec") || file.absoluteFile.endsWith(".ec"))
        }
        executionData.setFrom(executionTree)
    }

Update: This may work.更新:这可能有效。 That no XML is created is not related to the content of the script.没有创建 XML 与脚本的内容无关。 See accepted answer.请参阅接受的答案。 But anyway, the accepted answer is a more logical rewrite.但无论如何,接受的答案是更合乎逻辑的重写。

Try something like this:尝试这样的事情:

tasks.register("jacocoTestReport", JacocoReport::class) {
    group = "Reporting"
    description = "Generate Jacoco coverage reports"

    reports {
        csv.isEnabled = false
        html.isEnabled = false
        xml.isEnabled = true
    }

    sourceDirectories.setFrom(files("${project.projectDir}/src/main"))
    classDirectories.setFrom(
            fileTree("${buildDir}/intermediates/javac/debug/classes") {
                setExcludes(setOf("**/BuildConfig.class", "src/main/gen/**/*", "src/main/assets/**/*"))
            }
    )
    executionData.setFrom(
            fileTree(project.projectDir) {
                setIncludes(setOf("**/**/*.exec", "**/**/*.ec"))
            }
    )
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在 Gradle Kotlin 构建中配置 processResources 任务 - How to configure the processResources task in a Gradle Kotlin build 如何使用 build.gradle.kts 将覆盖率报告 (JaCoCo) 添加到 kotest? - How to add coverage report (JaCoCo) to kotest based using build.gradle.kts? Kotlin 类的 Gradle 集成测试任务 - Gradle integration test task for Kotlin classes Gradle 任务 jacoco 报告生成空的 html 报告文件(未指定类文件) - Gradle task jacoco report generate empty html report file (No class files specified) 在 Gradle 和 Kotlin 中使用 JaCoCo 时如何忽略方法? - How to ignore methods when using JaCoCo with Gradle and Kotlin? 如何在 build.gradle.kts 中设置 gradle 任务以在 Kotlin(1.4) 多平台项目中创建 fatJar - how to set up a gradle task to create fatJar in Kotlin(1.4) Multiplatform project in build.gradle.kts 在自定义任务的子项目中运行 gradle build(test) - Run gradle build(test) in subprojects in a custom task 如何获得测试覆盖或忽略Jacoco的Kotlin数据类 - How to get test coverage or ignore by Jacoco for Kotlin data classes Jacoco与Gradle和Kotlin没有创建jacoco.exec文件 - Jacoco with gradle and kotlin is not creating jacoco.exec file Jacoco gradle“排除”在使用 Kotlin 的 Android 项目中不起作用 - Jacoco gradle 'exclude' not working in Android project with Kotlin
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM