小编Syn*_*tey的帖子

使用 Robolectric 测试实时数据

我有以下测试,检查活动是否通过视图模型正确从存储库获取数据。

@Config(application = TestApplication::class)
@RunWith(RobolectricTestRunner::class)
@LooperMode(LooperMode.Mode.PAUSED)
class BusinessTests {
    private lateinit var viewModel: BusinessCollectionViewModel
    private lateinit var activity: BusinessCollectionVerticalActivity
    private lateinit var observer: Observer<Triple<NetworkState, PagedList<Edge<Business>>, TimeTracking?>>

    @Before
    fun setUp() {
        observer = mock()
    }

    @Test
    fun givenBusinessMock_whenVerticalCollection_thenBusinessVerticalWith2Items() {

        val activityScenario = ActivityScenario.launch(BusinessCollectionVerticalActivity::class.java)
        activityScenario.onActivity {
            activity = it
        }

        viewModel = ViewModelProviders.of(activity)[BusinessCollectionViewModel::class.java]

        viewModel.data.observeForever(observer)
        assert(viewModel.data.value?.second?.size == 2)
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是测试总是失败,但在调试中它正确通过,但是当我在断言中使用错误条件调试它时,会弹出以下异常。

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. …
Run Code Online (Sandbox Code Playgroud)

android robolectric android-livedata

4
推荐指数
1
解决办法
6377
查看次数

标签 统计

android ×1

android-livedata ×1

robolectric ×1