我正在尝试在KMM项目的共享
模块中编写测试。在共享模块的构建中。格拉德尔。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)的mocking库。
这是Mockk的K/N和Mockk的K/JS问题,供将来参考,或者您也可以查看Touchlab的Karmok
有关Hamcrest,请参见此处的问题
我从KMM团队那里得到了一个回复——我想我应该把它放在这里作为参考
您只能使用支持公共源集中所有声明目标的多平台依赖项,因为这可能用于所有目标的编译。JUnit不是一个多平台库,它是JVM,所以您应该将它添加到您的jvm目标源代码集(androidMain,如果您声明了android()目标)。检查这个项目:例如https://github.com/Kotlin/kmm-sample/blob/master/shared/build.gradle.kts。
同样的问题涉及到其他依赖项——它们不是多平台的,所以您不能在公共资源集中使用它们。