小编ona*_*per的帖子

使用 ActivityViewModels 测试 Android Fragment

我正在尝试对共享相同 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
}
Run Code Online (Sandbox Code Playgroud)

收到的消息是

Caused by: java.lang.InstantiationException: java.lang.Class<SomeViewModel> has no zero argument constructor
Run Code Online (Sandbox Code Playgroud)

testing android unit-testing

5
推荐指数
1
解决办法
1078
查看次数

标签 统计

android ×1

testing ×1

unit-testing ×1