如何解决用于 Kotlin 多平台移动设备的 Hamcrest 和 Mockk
我正在尝试在 KMM 项目的 shared
模块中编写测试。在共享模块的 build.gradle.kts 文件中,我有以下内容:
sourceSets {
val commonMain by getting
val commonTest by getting {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
//Todo: Hamcrest
//implementation("junit:junit:4.12")
//implementation("org.hamcrest:hamcrest-library:1.3")
//Todo: Mockk
//implementation("io.mockk:mockk:1.10.4")
}
}
//...
}
我也试过:
implementation(kotlin("[library]"))
结果相同:IDE 不再识别这些测试,我无法运行它们。
解决方法
不幸的是,没有一个支持 K/N (AFAIK) 的模拟库。
这里是 Mockk's K/N 和 Mockk's K/JS 问题以供将来参考,或者您也可以查看 Touchlab's Karmok
对于 Hamcrest,请参阅他们的问题 here
,我收到了 KMM 团队的回复 - 我想我会把它放在这里以供参考
您只能使用支持公共源集中所有声明目标的多平台依赖项,因为这将用于编译所有目标。 Junit 不是一个多平台库,它是 JVM,所以你应该将它添加到你的 jvm 目标源集(androidMain,如果你声明了 android() 目标)。检查这个项目:例如https://github.com/Kotlin/kmm-sample/blob/master/shared/build.gradle.kts。
同样的问题与其他依赖项有关 - 它们不是多平台的,因此您不能在公共源集中使用它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。