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
相关产品推荐
相关产品推荐

