kotlin - 用于 Kotlin 多平台移动设备的 Hamcrest 和 Mockk

标签 kotlin kotlin-multiplatform kotlin-multiplatform-mobile

我正在尝试在 KMMshared 模块中编写测试项目。在共享模块的 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/NMockk's K/JS问题以供将来引用,或者您也可以查看 Touchlab's Karmok

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

编辑/更新

在 2022 年,上述答案不再成立。 Mockk现在支持共享模块中的模拟。请在这里查看mockk.io添加以下依赖项,你应该可以开始了

testImplementation "io.mockk:mockk-common:{version}"

模拟体验是无缝的,就像常规的 Android 单元测试用例一样。

关于kotlin - 用于 Kotlin 多平台移动设备的 Hamcrest 和 Mockk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65561205/

相关文章:

reflection - kotlin 反射检查可空类型

java - Kotlin/KAPT 生成的 Kotlin 类不被识别为类成员,但它在方法内部被识别

Kotlin MPP pod 集成失败

android - KMM : How to reference the shared module into an already existing iOS project

android - Gradle 项目同步失败,原因 : org/gradle/api/internal/FeaturePreviews

android - 适用于 Kotlin 多平台移动设备的 Skia

android - ArrayAdapter 使用 Kotlin android

Android Studio Kotlin editText 不起作用

gradle - 如何在多平台多项目 Kotlin 构建中向另一个项目的测试添加依赖项

unit-testing - 无法从仅 jvm 模块访问 commonMain 多平台类