ror*_*ror 1 android android-instrumentation koin
无法让这个东西正常工作。
class HelloInstrumentationTestRunner : AndroidJUnitRunner() {
override fun newApplication(
cl: ClassLoader?, className: String?, context: Context?
): Application {
return Instrumentation.newApplication(HelloTestApp::class.java, context)
}
}
Run Code Online (Sandbox Code Playgroud)
startKoin {
androidLogger()
androidContext(applicationContext)
fragmentFactory()
modules(appModule + viewModelsModule)
}
Run Code Online (Sandbox Code Playgroud)
stopKoin()(说没有配置 Koin 上下文。请使用 startKoin 或 koinApplication DSL)declareMock后续测试方法不再起作用。所有这些问题基本上都是因为应用程序实例在测试之间仍然存在,因此 Android 应用程序实例内部配置的图形也在测试之间仍然存在。我需要这种情况不要发生,或者至少能够在测试之间修改图表。
解决了。
val overrideModule = module(override = true) {
single<Repository1> {
mock(Repository1::class.java)
}
single { Repository2(get(), get()) }
single<Repository3> {
mock(Repository3::class.java)
}
...
}
Run Code Online (Sandbox Code Playgroud)
loadKoinModules(overrideModule)unloadKoinModules(overrideModule) given(get<Repository1>().magicCall()).willReturn(
MagicData(
"1111",
Calendar.getInstance().timeInMillis
)
)
Run Code Online (Sandbox Code Playgroud)
无需处理 stopKoin 之类的东西,超级简单!
| 归档时间: |
|
| 查看次数: |
2125 次 |
| 最近记录: |