微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Robolectric 运行具有 LiveData 观察器的片段测试

如何解决如何使用 Robolectric 运行具有 LiveData 观察器的片段测试

如何在包含使用 Robolectric 的 LiveData 观察者的测试范围内启动片段。

我的片段正在观察来自 viewmodel 的 liveData。如果我删除这部分代码,测试就会运行。


fun observerData() {

    viewmodel.MyLiveData.observe(viewLifecycleOwner,Observer {
        ...
    })
}

测试使用片段场景来启动片段。

@RunWith(RobolectricTestRunner::class) 
class MyFragmentTest {

    @Test
    fun mytest() {
         val viewmodel: Myviewmodel = mock(Myviewmodel::class.java)
         val scenario = launchFragmentInContainer(
             factory = MainFragmentFactory(viewmodel),fragmentArgs = null,themeResId = R.style.Theme_MyTheme
         )
    }
}

测试返回以下错误

java.lang.Exception: Main looper has queued unexecuted runnables. This might be the cause of the test failure. You might need a shadowOf(getMainLooper()).idle() call.

我已经尝试将主循环器设置为偶像,但仍然出现相同的错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。