You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Native项目执行koverReport无输出,覆盖率报告未生成

解决Kover在Kotlin Native项目中无法生成覆盖率报告的问题

问题根源

  1. 你的Native目标仅配置了可执行文件(executable),未创建测试二进制,Kover找不到对应的测试任务
  2. koverReport任务未绑定测试执行流程,没有覆盖率数据时直接跳过报告生成步骤
  3. 默认配置下Kover不会自动关联Kotlin Native的源代码集和测试目标

修复方案

1. 为Native目标添加测试二进制配置

在nativeTarget.apply的binaries块中补充测试配置:

nativeTarget.apply {
    binaries {
        executable {
            entryPoint = "main"
        }
        // 添加测试二进制配置
        test {
            // 可选:指定测试运行器,默认使用Kotlin/Native自带的即可
        }
    }
}

2. 显式配置Kover的覆盖范围

在build.gradle.kts中添加Kover专属配置块,明确要覆盖的代码和关联的测试任务:

kover {
    reports {
        html {
            enabled = true
            outputDir = file("$buildDir/reports/kover/html")
        }
        xml {
            enabled = true
            outputFile = file("$buildDir/reports/kover/report.xml")
        }
    }

    coverageEngine.set(kotlinx.kover.api.CoverageEngine.INTELLIJ)
}

koverMerged {
    // 关联通用和Native的源代码集
    sourceSets(project.kotlin.sourceSets.commonMain, project.kotlin.sourceSets.nativeMain)
    // 绑定Native测试任务
    testTasks(project.tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinNativeTest>())
}

3. 确保测试任务优先执行

有两种方式触发完整的测试+报告生成流程:

# 方式1:直接运行check任务,自动执行测试并生成覆盖率报告
./gradlew check

# 方式2:先执行Native测试,再生成报告
./gradlew nativeTest koverReport

4. 验证结果

修改配置后重新运行任务,日志中会看到nativeTest任务执行,koverHtmlReport和koverXmlReport不再被跳过,最终会在build/reports/kover目录下生成对应的HTML和XML报告文件。

补充说明

  • Kover 0.6.x配合Kotlin 1.8.x时,Native测试需要显式配置二进制,后续版本可能会优化自动识别逻辑
  • 确保nativeTest源代码集内有实际的测试用例,否则生成的报告覆盖率会显示为0

内容的提问来源于stack exchange,提问作者leung018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:03:36