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

KMM项目commonTest测试私有方法:commonMain需加何种依赖?

在KMM commonMain模块使用@VisibleForTesting的方案

1. 添加AndroidX注解多平台依赖

在KMM项目的构建脚本(build.gradle.kts或build.gradle)的commonMain依赖块中,添加AndroidX注解的多平台兼容依赖:

commonMain.dependencies {
    implementation("androidx.annotation:annotation:1.7.0")
}

这个依赖支持全平台,能直接在commonMain代码中使用@VisibleForTesting注解。

2. 注解使用示例

在commonMain的类中,给目标私有方法标记注解:

class SharedCalculator {
    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
    private fun sumNumbers(numbers: List<Int>): Int {
        return numbers.sum()
    }
}

之后在commonTest或各平台测试模块里,就能访问这个方法进行Mockk验证或测试。

3. 无依赖替代方案

如果不想引入AndroidX依赖,可以自行在commonMain中定义功能一致的注解:

@Retention(AnnotationRetention.BINARY)
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
annotation class VisibleForTesting(
    val otherwise: Int = PRIVATE
) {
    companion object {
        const val PRIVATE = 2
        const val PACKAGE_PRIVATE = 3
        const val PROTECTED = 4
        const val PUBLIC = 1
    }
}

自定义注解的使用方式和AndroidX版本完全相同,无需额外依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:07:02