【问题标题】:Hamcrest and Mockk for Kotlin Multiplatform Mobile用于 Kotlin Multiplatform Mobile 的 Hamcrest 和 Mockk
【发布时间】:2021-01-04 10:36:29
【问题描述】:

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

【问题讨论】:

  • 我认为 hamcrest 和 mockk ref 都不是 kotlin 多平台库。
  • 天哪,我认为测试中的那些至少可以是标准的 kotlin 库,因为它们没有被部署......我在这里看到了同样的情况:stackoverflow.com/questions/58320492/… 谢谢!

标签: kotlin kotlin-multiplatform kotlin-multiplatform-mobile


【解决方案1】:

很遗憾,没有支持 K/N (AFAIK) 的模拟库。

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

对于 Hamcrest,请参阅他们的问题 here

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-01-30
      • 2021-06-25
      • 2021-08-13
      • 2022-11-23
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 2022-12-30
      • 1970-01-01
      相关资源
      最近更新 更多