```sk.o2.radost.onboarding.alternativeflow.informa...
# test
u
Copy code
sk.o2.radost.onboarding.alternativeflow.information.CustomerAddressViewModelTest > should navigate to photos screen on confirming valid address FAILED
    java.lang.IllegalStateException: Module with the Main dispatcher had failed to initialize. For tests Dispatchers.setMain from kotlinx-coroutines-test module can be used
        at kotlinx.coroutines.internal.MissingMainCoroutineDispatcher.missing(MainDispatchers.kt:113)
        at kotlinx.coroutines.internal.MissingMainCoroutineDispatcher.isDispatchNeeded(MainDispatchers.kt:94)
        at kotlinx.coroutines.test.internal.TestMainDispatcher.isDispatchNeeded(MainTestDispatcher.kt:38)
        at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:319)
        at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
        at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
        at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
        at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
        at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
        at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
        at sk.o2.radost.onboarding.alternativeflow.information.CustomerAddressViewModel.init(CustomerAddressViewModel.kt:25)
        at sk.o2.radost.onboarding.alternativeflow.information.CustomerAddressViewModelTest$should navigate to photos screen on confirming valid address$1.invokeSuspend(CustomerAddressViewModelTest.kt:157)
        at sk.o2.radost.onboarding.alternativeflow.information.CustomerAddressViewModelTest$should navigate to photos screen on confirming valid address$1.invoke(CustomerAddressViewModelTest.kt)
        at sk.o2.radost.onboarding.alternativeflow.information.CustomerAddressViewModelTest$should navigate to photos screen on confirming valid address$1.invoke(CustomerAddressViewModelTest.kt)
        at kotlinx.coroutines.test.TestBuildersKt$runBlockingTest$deferred$1.invokeSuspend(TestBuilders.kt:50)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.test.TestCoroutineDispatcher.dispatch(TestCoroutineDispatcher.kt:50)
        at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:322)
        at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:30)
        at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default(Cancellable.kt:25)
        at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:110)
        at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.async(Builders.common.kt:91)
        at kotlinx.coroutines.BuildersKt.async(Unknown Source)
        at kotlinx.coroutines.BuildersKt__Builders_commonKt.async$default(Builders.common.kt:82)
        at kotlinx.coroutines.BuildersKt.async$default(Unknown Source)
        at kotlinx.coroutines.test.TestBuildersKt.runBlockingTest(TestBuilders.kt:49)
        at kotlinx.coroutines.test.TestBuildersKt.runBlockingTest$default(TestBuilders.kt:45)
        at sk.o2.radost.onboarding.alternativeflow.information.CustomerAddressViewModelTest.should navigate to photos screen on confirming valid address(CustomerAddressViewModelTest.kt:154)
        Caused by:
        java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked. See <http://g.co/androidstudio/not-mocked> for details.
            at android.os.Looper.getMainLooper(Looper.java)
            at kotlinx.coroutines.android.AndroidDispatcherFactory.createDispatcher(HandlerDispatcher.kt:55)
            at kotlinx.coroutines.android.AndroidDispatcherFactory.createDispatcher(HandlerDispatcher.kt:52)
            at kotlinx.coroutines.internal.MainDispatchersKt.tryCreateDispatcher(MainDispatchers.kt:57)
            at kotlinx.coroutines.test.internal.TestMainDispatcher.getDelegate(MainTestDispatcher.kt:19)
            at kotlinx.coroutines.test.internal.TestMainDispatcher.isDispatchNeeded(MainTestDispatcher.kt:38)
            at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:158)
            at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
            at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)
            at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
            at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328)
            at kotlinx.coroutines.flow.SharedFlowImpl.tryEmit(SharedFlow.kt:368)
            at kotlinx.coroutines.flow.SharedFlowImpl.emit(SharedFlow.kt:373)
            at kotlinx.coroutines.flow.StateFlowImpl.collect(StateFlow.kt:398)
            at kotlinx.coroutines.flow.FlowKt__ShareKt$launchSharing$1$2.invokeSuspend(Share.kt:219)
            at kotlinx.coroutines.flow.FlowKt__ShareKt$launchSharing$1$2.invoke(Share.kt)
            at kotlinx.coroutines.flow.FlowKt__ShareKt$launchSharing$1$2.invoke(Share.kt)
            at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invokeSuspend(Merge.kt:217)
            at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invoke(Merge.kt)
            at kotlinx.coroutines.flow.FlowKt__MergeKt$mapLatest$1.invoke(Merge.kt)
            at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invokeSuspend(Merge.kt:34)
            at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invoke(Merge.kt)
            at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$1$2.invoke(Merge.kt)
            at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:55)
            at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
            at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
            at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
            at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
            at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
            at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source)
            at kotlinx.coroutines.flow.internal.ChannelFlowTransformLatest$flowCollect$3$invokeSuspend$$inlined$collect$1.emit(Collect.kt:140)
            at kotlinx.coroutines.flow.DistinctFlowImpl$collect$$inlined$collect$1.emit(Collect.kt:139)
            at kotlinx.coroutines.flow.FlowKt__LimitKt$dropWhile$lambda-4$$inlined$collect$1.emit(Collect.kt:139)
            at kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAllImpl$FlowKt__ChannelsKt(Channels.kt:62)
            at kotlinx.coroutines.flow.FlowKt__ChannelsKt.access$emitAllImpl$FlowKt__ChannelsKt(Channels.kt:1)
            at kotlinx.coroutines.flow.FlowKt__ChannelsKt$emitAllImpl$1.invokeSuspend(Channels.kt)
            at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
            at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
            at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
            at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
            at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
            at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
Why does this sometimes happen on CI? I rerun the test and then it passes