1

我正在尝试将自定义 AndroidJUnitRunner 实现与 ActivityScenarios 一起使用。目标是为单元测试提供一个 KodeinAware 的应用程序实例。

但是,尽管遵循了在线找到的示例,但似乎没有使用自定义运行器。我正在通过在以下覆盖中打印一条语句进行测试:

class KodeinAwareRunner : AndroidJUnitRunner() {
    @Throws(Exception::class)
    override fun newApplication(cl: ClassLoader, className: String, context: Context): Application {
        println("hellooOOOOooooo")
        return super.newApplication(
            cl, KodeinAwareApplication::class.java.name, context
        )
    }
}

我还更新了 build.gradle 以使用自定义运行器:

 testInstrumentationRunner "my.custom.testrunner.KodeinAwareRunner"

为了更加确定我没有丢失日志中的打印语句,我的 KodeinAware Activity 中还有以下初始化代码:

override val kodein: Kodein by lazy {
        (applicationContext as KodeinAware).kodein
    }

结果,我不断收到以下异常,表明未使用自定义测试运行器:

java.lang.ClassCastException:android.app.Application 无法转换为 org.kodein.di.KodeinAware


我想强调的是,自定义运行器仅适用于常规 Android 单元测试,而不适用于仪器测试。

由于上述测试是 Android 库的一部分,我也没有使用生产应用程序类,所以我不希望模块中有应用程序。

有谁知道我可能做错了什么或者我是否错过了一些步骤?

4

0 回答 0