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

如何为含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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:43:20