Kotlin多平台覆盖率是什么?

11

有没有工具可以测量Kotlin多平台项目的公共部分的测试覆盖率? 我正在研究将Kotlin项目迁移到多平台。我是一个TDD开发者,代码有98%的覆盖率。好的95%可以移至公共部分。我是否考虑放弃覆盖度指标?


我刚在IDEA的错误跟踪器上提出了一个功能请求:https://youtrack.jetbrains.com/issue/IDEA-241030 - HectorJ
3个回答

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
    }
}


执行下面的命令将在build/reports/test/jacoco路径下生成报告。
gradle clean build jacocoTestReport

0

-1
据我所知,能够测量 Kotlin 覆盖率的唯一工具是 Jetbrains IDEA。我几乎确定它也可以计算 Kotlin MPP 的覆盖率,但遗憾的是,我不知道将其插入 CI 流水线的任何明智方法。

1
你可以使用JaCoCo Gradle插件来测量代码覆盖率,但它仅适用于Kotlin/JVM。 - ardenit
如果整个代码库都没有平台相关的内容,那么它应该可以满足@nwillc的需求,否则就不能。 - asm0dey
我看到有人使用过Jacoco,但是这些示例似乎对我不起作用。我在其他项目中成功地使用了Jacoco,但是似乎无法在Kotlin多平台、Gradle 6.1和Kotlin DSL中使其正常工作。 - nwillc
Jacoco只能在Kotlin/JVM上使用,而不是Kotlin Native,这是你的情况。我也在寻找同样的东西。 - hamada147

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接