我正在尝试将自定义 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 库的一部分,我也没有使用生产应用程序类,所以我不希望模块中有应用程序。
有谁知道我可能做错了什么或者我是否错过了一些步骤?