1

我正在尝试在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 不再识别测试,我无法运行它们。

4

2 回答 2

5

不幸的是,没有一个支持 K/N 的模拟库(AFAIK)。

这是Mockk 的 K/NMockk 的 K/JS问题以供将来参考,或者您也可以查看Touchlab 的 Karmok

对于 Hamcrest,请在此处查看他们的问题

于 2021-01-04T14:01:01.587 回答
1

我收到了 KMM 团队的回复——我想我会把它放在这里以供参考

您只能使用支持公共源集中所有已声明目标的多平台依赖项,因为这可用于编译所有目标。Junit 不是一个多平台库,它是 JVM,所以你应该将它添加到你的 jvm 目标源集(如果你声明了 android() 目标,则为 androidMain)。检查这个项目:例如https://github.com/Kotlin/kmm-sample/blob/master/shared/build.gradle.kts 。

同样的问题与其他依赖项有关——它们不是多平台的,所以你不能在公共源集中使用它们。

于 2021-01-30T21:48:29.880 回答