kotlin 多平台覆盖?

nwi*_*llc 7 testing code-coverage multiplatform kotlin

是否有任何工具可以衡量 Kotlin 多平台项目的公共部分中的测试覆盖率?我正在研究将 Kotlin 项目迁移到多平台。我是一名 TDD 开发人员,代码覆盖率达 98%。一个好的 95% 可以移动到普通。我是否正在考虑放弃覆盖率指标?

Vic*_*son 7

我还有一个多平台 kotlin 项目,它使用 jacoco 进行测试覆盖率。

只需遵循本指南即可

但如果您使用 gradle kotlin dsl,则需要进行一些配置:

plugins {
    kotlin("multiplatform") version "1.3.72"
    id("java-library")
    jacoco
}

jacoco {
    toolVersion = "0.8.6"
}

tasks.jacocoTestReport {
    val coverageSourceDirs = arrayOf(
            "src/commonMain",
            "src/jvmMain"
    )

    val classFiles = File("${buildDir}/classes/kotlin/jvm/")
            .walkBottomUp()
            .toSet()

    classDirectories.setFrom(classFiles)
    sourceDirectories.setFrom(files(coverageSourceDirs))

    executionData
            .setFrom(files("${buildDir}/jacoco/jvmTest.exec"))

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

Run Code Online (Sandbox Code Playgroud)

运行下面的命令将生成有关您的报告build/reports/test/jacoco

gradle clean build jacocoTestReport
Run Code Online (Sandbox Code Playgroud)


asm*_*dey -1

据我所知,唯一能够测量 Kotlin 覆盖率的工具是 Jetbrains IDEA。我几乎确信它也可以计算 Kotlin MPP 的覆盖率,但遗憾的是我不知道有什么明智的方法将其插入 CI 管道。