如何为含Android与Kotlin模块的多模块项目配置Kover
解决Kover多模块(Android+Kotlin)合并覆盖率报告问题
针对你的场景(带debug/release变体的Android模块+无变体纯Kotlin模块,Kover 0.9.1),可以通过全局配置+模块变体映射实现仅针对debug变体生成包含跨模块的合并覆盖率报告,具体步骤如下:
1. 根项目配置
在根目录build.gradle.kts中统一管理Kover插件和全局规则:
plugins { id("org.jetbrains.kotlinx.kover") version "0.9.1" apply false } allprojects { repositories { // 保留你的仓库配置,比如mavenCentral()等 } } kover { isDisabled.set(false) coverageEngine.set(kotlinx.kover.api.CoverageEngine.INTELLIJ) }
2. 纯Kotlin模块(:domain)配置
仅需在:domain的build.gradle.kts中应用Kover插件:
plugins { kotlin("jvm") id("org.jetbrains.kotlinx.kover") } // 保留原有依赖、测试等配置
3. Android模块(:data)配置
核心是将Kotlin模块的覆盖率任务与Android的debug变体绑定,确保运行debug报告时自动触发:domain的覆盖率收集:
plugins { id("com.android.library") // 或com.android.application kotlin("android") id("org.jetbrains.kotlinx.kover") } android { // 保留原有compileSdk、defaultConfig等配置 buildTypes { getByName("debug") { isMinifyEnabled = false } getByName("release") { isMinifyEnabled = true // 保留原有release配置 } } } // 关键:将:domain模块的覆盖率关联到:data的debug变体 kover { variant("debug") { includes(project(":domain")) } } // 保留原有依赖配置 dependencies { implementation(project(":domain")) // 保留测试依赖等配置 }
4. 生成合并报告
执行以下命令,即可生成仅针对debug变体、包含:data和:domain模块的合并HTML覆盖率报告:
./gradlew :data:koverHtmlReportDebug
原理说明
- 纯Kotlin模块无build变体,Kover默认生成无变体的覆盖率任务(
koverHtmlReport) - 通过
:data模块的kover.variant("debug")指定includes(project(":domain")),Kover会自动将:domain的覆盖率任务与:data的debug变体报告任务绑定,无需手动触发全变体任务 - 既避免了全变体报告的耗时问题,又能完整统计跨模块测试的覆盖率
内容的提问来源于stack exchange,提问作者Wirling
相关产品推荐
相关产品推荐

