Luca Nicoletti
08/07/2023, 9:47 AMviewModelScope.launch {}while(isActive)runTestassertEquallaunchStepan Churyukanov
08/07/2023, 10:00 AMclass ReplaceMainDispatcherExtension(
    private val testDispatcher: TestDispatcher = UnconfinedTestDispatcher()
) : BeforeEachCallback, AfterEachCallback {
    override fun beforeEach(context: ExtensionContext) {
        Dispatchers.setMain(testDispatcher)
    }
    override fun afterEach(context: ExtensionContext?) {
        Dispatchers.resetMain()
    }
}Luca Nicoletti
08/07/2023, 10:00 AMLuca Nicoletti
08/07/2023, 10:00 AMLuca Nicoletti
08/07/2023, 10:00 AMStepan Churyukanov
08/07/2023, 10:03 AMLuca Nicoletti
08/07/2023, 10:05 AMzsmb
08/07/2023, 12:51 PMLuca Nicoletti
08/07/2023, 12:52 PMStepan Churyukanov
08/07/2023, 12:53 PMclass MyViewModel: ViewModel() {
    fun runSomething(scope: CoroutinesScope = viewModelScope) {
        scope.launch {
            // your problematic code
        }
    }
}class MyViewModelTest {
    val scope = TestScope(UnconfinedTestDispatcher())
    
    @Test 
    fun test() {
        MyViewModel().runSomething(scope)
        scope.cancel()
    }
}zsmb
08/07/2023, 12:54 PMTestScope.backgroundScoperunTestLuca Nicoletti
08/07/2023, 12:55 PMviewModelScope.launchLuca Nicoletti
08/07/2023, 12:55 PM@Rulezsmb
08/07/2023, 12:57 PMviewModelScopezsmb
08/07/2023, 12:58 PMLuca Nicoletti
08/07/2023, 1:07 PMviewModelScopelaunchzsmb
08/07/2023, 4:16 PMJobviewModelScope.launch()JobHaroon Iftikhar
08/07/2023, 6:02 PMErfannj En
08/08/2023, 8:04 AMLuca Nicoletti
08/08/2023, 8:16 AMyieldErfannj En
08/08/2023, 8:17 AMLuca Nicoletti
08/08/2023, 9:42 AM