【发布时间】:2021-07-01 20:10:11
【问题描述】:
我正在尝试为共享相同 ViewModel 的片段运行 android 仪器测试。 ViewModel 有一些参数。 我使用 koin,但是在测试中使用 activityViewModels 时,koin 不会注入 ViewModel。
class SomeFragment() : Fragment() {
private val viewModel: SomeViewModel by activityViewModels()
... more code
}
class SomeFragmentTest() : KoinTest{
@Before
fun setup() {
val viewModel: SomeViewModel = mockk(relaxed = true)
startKoin { loadKoinModules(listOf(
module(override = true) { viewModel },
module(override = true) { factory { appAnalytics } })) }
}
.... more code
}
收到的消息是
Caused by: java.lang.InstantiationException: java.lang.Class<SomeViewModel> has no zero argument constructor
【问题讨论】:
-
您应该标记自己的答案 :) 这是一个很好的解决方案,在 2021 年 11 月仍然有效。
标签: android unit-testing testing