如何用Kover为Kotlin Native项目生成代码覆盖率报告?
Kotlin Native项目使用Kover插件无法生成代码覆盖率报告的解决方法
针对你遇到的Kotlin Native项目配置Kover后无法生成覆盖率文件的问题,以下是几个容易遗漏的关键点:
1. 插件版本兼容性问题
你当前用的Kover 0.6.1只支持Kotlin 1.7.x版本,但项目用的是Kotlin 1.8.0,版本不匹配会直接导致覆盖率收集失效。需要把Kover升级到兼容1.8.x的版本,比如0.7.0及以上:
plugins { kotlin("multiplatform") version "1.8.0" id("org.jetbrains.kotlinx.kover") version "0.7.3" // 升级到兼容版本 }
2. 显式配置Kover支持Native目标
虽然官方文档说无需额外配置,但部分场景下需要显式指定Kover监控的Native目标,避免自动配置失效。在build.gradle.kts里添加Kover配置块:
kover { reports { defaults { xml { onCheck = true // 执行check任务时生成XML格式报告 } html { onCheck = true // 生成可直接在浏览器查看的HTML报告 } } } }
3. 执行正确的Kover任务
别直接跑allTests,这个任务只负责执行测试,不会触发覆盖率数据收集和报告生成。要运行专门的Kover任务:
- 生成所有目标的覆盖率报告:
./gradlew koverReport - 仅生成macosX64目标的报告:
./gradlew koverMacosX64Report
执行完成后,覆盖率文件会生成在build/reports/kover目录下,HTML报告可以直接用浏览器打开查看。
4. 确认测试任务正常执行
先跑./gradlew macosX64Test确保测试能正常通过,如果测试本身没执行,Kover自然不会生成任何覆盖率数据。
修改后的完整build.gradle.kts示例:
plugins { kotlin("multiplatform") version "1.8.0" id("org.jetbrains.kotlinx.kover") version "0.7.3" } group = "me.user" version = "1.0-SNAPSHOT" repositories { mavenCentral() } kotlin { macosX64() sourceSets { val macosX64Main by getting val macosX64Test by getting } } kover { reports { defaults { xml { onCheck = true } html { onCheck = true } } } }
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

