首页 > 解决方案 > 在 Android 项目中使用 AbstractProjectConfig

问题描述

我正在尝试为 Kotest 设置全局项目配置。我已按照https://kotest.io/project_config/的说明进行操作

但是,我在下面有许多未解决的项目:

package io.kotest.provided

import io.kotest.core.config.AbstractProjectConfig

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

其中,在 import 语句中,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()
    }
}

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

标签: androidkotest

解决方案


因此,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 的新手,这对我来说并不明显,所以很抱歉,如果这是一个更有经验的人一眼就能解决的问题!


推荐阅读