Android Mvvm协同程序Mockito测试视图模型给出错误

Android Mvvm协同程序Mockito测试视图模型给出错误,android,unit-testing,mvvm,mockito,kotlin-coroutines,Android,Unit Testing,Mvvm,Mockito,Kotlin Coroutines,我测试viewmodel的测试用例如下所示: @Before fun setUp() { loginActivityViewModel = LoginActivityViewModel(loginRepository) .apply { users.observeForever(userObserver) } } @Test fun `check user response when get successful response from server`() {

我测试viewmodel的测试用例如下所示:

@Before
fun setUp() {
    loginActivityViewModel = LoginActivityViewModel(loginRepository)
        .apply { users.observeForever(userObserver) }
}

@Test
fun `check user response when get successful response from server`() {
    testCoroutineRule.runBlockingTest {
        //Given
        whenever(loginRepository.getLoginResponse(loginRequest)).then(Answer { loginResponse })

        //When
        loginActivityViewModel.loginResponse(loginRequest)

        //Then
        verify(userObserver).onChanged(Resource.loading(data = null))
        verify(userObserver).onChanged(Resource.success(data = loginResponse))
    }
}

@Test
fun `check user response when get unsuccessful response from server`() {
    testCoroutineRule.runBlockingTest {
        //Given
        whenever(loginRepository.getLoginResponse(loginRequest)).thenThrow(Error("Some error"))

        //When
        loginActivityViewModel.loginResponse(loginRequest)

        //Then
        verify(userObserver).onChanged(Resource.loading(data = null))
        verify(userObserver).onChanged(Resource.error(message = "Some error"))
    }
}
在此第一个测试用例内成功运行,但在运行第二个测试用例时出现以下错误:

需要但未调用:userObserver.onChanged( 资源(状态=错误,数据=空,消息=某些错误)); ->在com.android.loginapp.viewmodel.LoginActivityViewModelTest$上,当从获取不成功的响应时,检查用户响应 服务器$1.invokeSuspend(LoginActivityViewModelTest.kt:83)

但是,与此模拟只有1次交互: userObserver.onChanged( 资源(状态=加载,数据=空,消息=空); ->位于androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)

我的viewModel网络调用方法如下所示:

fun loginResponse(loginRequest: LoginRequest) {
    viewModelScope.launch {
        users.postValue(Resource.loading(null))
        try {
            val usersFromApi = loginRepository.getLoginResponse(loginRequest)
            users.postValue(Resource.success(usersFromApi))
        } catch (e: Exception) {
            users.postValue(Resource.error(e.message.toString()))
        }
    }
}

不确定它为什么会出现此错误。

我需要使用
。然后抛出(RuntimeException(“test error”)
,然后只有它会通过