在 Android 项目中使用 AbstractProjectConfig

Using AbstractProjectConfig in Android project

我正在尝试为 Kotest 设置全局项目配置。我已按照 https://kotest.io/project_config/

中的说明进行操作

但是,我在下面有一些未解决的问题:

package io.kotest.provided

import io.kotest.core.config.AbstractProjectConfig

object ProjectConfig : AbstractProjectConfig() {
    override val assertionMode = AssertionMode.Error
}

其中,在导入语句中,core 未解析。

AbstractProjectConfig 未解决。

AssertionMode 未解决。

那么当然,assertionMode 也“无视任何内容”

在我的应用级别 build.gradle,我有

dependencies {

[...]

    testImplementation 'io.kotest:kotest-runner-junit5:4.3.1' // for kotest framework
    testImplementation 'io.kotest:kotest-assertions-core:4.3.1' // for kotest core jvm assertions
    testImplementation 'io.kotest:kotest-property:4.3.1' // for kotest property test
}

android.testOptions {
    unitTests.all {
        useJUnitPlatform()
    }
}

是否可以在 Android 项目中使用 AbstractProjectConfig?如果是这样,请问我哪里出错了?

所以看起来 kotest 文档有点误导(我已经提交了一个问题:https://github.com/kotest/kotest/issues/1866)。我发现我的应用程序级别 build.gradle 所需的依赖项的形式为:

dependencies {
    testImplementation("io.kotest:kotest-runner-junit5-jvm:<version>")
    androidTestImplementation("io.kotest:kotest-runner-junit5-jvm:<version>") {
        exclude(module: "objenesis")
    }
    androidTestImplementation("io.kotest:kotest-assertions-core-jvm:<version>")

https://github.com/kotest/kotest-android-samples/blob/master/app/build.gradle

中的示例应用程序所示

参考 https://kotest.io/quick_start/#gradle 中显示的内容,有几个主要区别:

dependencies {
    testImplementation 'io.kotest:kotest-runner-junit5:<version>' // for kotest framework
    testImplementation 'io.kotest:kotest-assertions-core:<version>' // for kotest core jvm assertions
    testImplementation 'io.kotest:kotest-property:<version>' // for kotest property test
}

请注意,示例应用依赖项有效,文档中的依赖项无效。

即后缀 -jvm 是必需的,在某些情况下,androidTestImplementation 是必需的,而不是 testImplementation。我是测试新手,Android 这对我来说并不明显,所以很抱歉,如果这是更有经验的人一眼就能解决的问题!