如何使用build.gradle.kts为kotest添加覆盖率报告(JaCoCo)?

问题描述 投票:0回答:1

我在服务器端使用Kotlin,我想添加测试覆盖率(通过使用JaCoCo,但也可以是任何其他的开源软件)。目前,我没有找到任何文档来解释如何在基于kotest的kotlin项目中添加覆盖率报告,并实际工作。公文)

build.gradle.kts。

import Libraries.coroutines
import Libraries.koTest
import Libraries.koTestCore
import Libraries.mockk
import Libraries.testcontainers
import Libraries.testcontainersPostgres

plugins {
    java
    `kotlin-dsl` version "1.3.5" apply false
    kotlin("jvm") version Versions.kotlin_version
    kotlin("plugin.serialization") version Versions.kotlin_version apply false
    id("com.diffplug.gradle.spotless") version Plugins.spotless
    id("com.palantir.docker") version Plugins.docker apply false
    id("com.palantir.docker-run") version Plugins.docker apply false
    id("com.google.protobuf") version Plugins.protobuf apply false
    id("org.flywaydb.flyway") version Plugins.flyway apply false
}

allprojects {
    group = "my-app"
    version = "2.0"

    apply(plugin = "kotlin")
    apply(plugin = "com.diffplug.gradle.spotless")

    repositories {
        mavenCentral()
        jcenter()
    }

    tasks {
        compileKotlin {
            dependsOn(spotlessApply)
            kotlinOptions {
                jvmTarget = "11"
            }
        }
        compileTestKotlin {
            kotlinOptions {
                jvmTarget = "11"
            }
        }
    }

    java {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
    }

    tasks.withType<Test> {
        useJUnitPlatform()
        maxParallelForks = 1
        environment("ENV", "test")
    }

    afterEvaluate {
        project.configurations.forEach {
            // Workaround the Gradle bug resolving multiplatform dependencies.
            if (it.name.contains("Proto")) {
                it.attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.JAVA_RUNTIME))
            }
        }
    }
}

subprojects {
    spotless {
        kotlin {
            ktlint().userData(mapOf("disabled_rules" to "no-wildcard-imports"))
            trimTrailingWhitespace()
            endWithNewline()
        }
    }

    dependencies {
        implementation(coroutines)
        testImplementation(koTest)
        testImplementation(koTestCore)
        testImplementation(mockk)
        testImplementation(testcontainers)
        testImplementation(testcontainersPostgres)
    }

    configurations {
        all {
            resolutionStrategy.setForcedModules("org.apache.httpcomponents:httpclient:4.5.9")
        }
    }
}

任何帮助都将是巨大的。先谢谢你。

kotlin build.gradle jacoco gradle-kotlin-dsl kotest
1个回答
0
投票

我不知道kotest有什么特别的要求。参考这个插件文档 https:/docs.gradle.orgcurrentuserguidejacoco_plugin.html。 按照这个方法,我能够得到

© www.soinside.com 2019 - 2024. All rights reserved.