【问题标题】:kotlin multiplatform coverage? [closed]kotlin 多平台覆盖? [关闭]
【发布时间】:2020-05-05 05:30:27
【问题描述】:

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

【问题讨论】:

标签: testing kotlin code-coverage multiplatform


【解决方案1】:

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

只要关注这个guide

但如果您使用 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 您可以使用 JaCoCo Gradle 插件来测量代码覆盖率,但它仅适用于 Kotlin/JVM
    • 哪些可以或不能满足@nwillc 的需求。如果整个代码库的编写没有依赖于平台的东西——它应该可以完美运行!
    • 我见过有人使用 jacoco - 但这些例子似乎对我不起作用。我在其他项目中成功使用了 jacoco,但似乎无法使用:Kotlin multiplatform、gradle 6.1、kotlin dsl。
    • jacoco 只能在 Kotlin/JVM 上使用,而不是 Kotlin Native,这是你的情况。我也在寻找同样的东西。
    【解决方案3】:

    试试这个:https://github.com/Kotlin/kotlinx-kover(Kotlin 代码覆盖代理的 Gradle 插件:IntelliJ 和 JaCoCo。)

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 2020-03-09
      • 1970-01-01
      相关资源
      最近更新 更多