На самом деле здесь есть пара подобных вопросов, но я попробовал все предложения и все еще сталкиваюсь с этой проблемой.
Wanted but not invoked:
observer.onChanged(<Repo matcher>);
-> at xxx.RepoViewModelTest.testRepoList(RepoViewModelTest.kt:51)
Actually, there were zero interactions with this mock.
class RepoViewModelTest {
@get:Rule var instantTaskExecutorRule = InstantTaskExecutorRule()
@Mock private lateinit var observer: Observer<DataWrapper<List<Repo>>>
@Mock private lateinit var repoRepository: RepoRepository
private lateinit var repoViewModel: RepoViewModel
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
repoViewModel = RepoViewModel(RepoUseCase(repoRepository))
}
@Test
fun testError() {
`when`(repoRepository.getRepos("mine"))
.thenReturn(Observable.error(Exception("No internet")))
repoViewModel.observeRepos().observeForever(observer)
repoViewModel.getRepos("mine")
verify(observer).onChanged(
argThat(RepoMatcher(DataWrapper(Exception("No internet")))))
}
@Test
fun testRepoList() {
val listIn = listOf(Repo("Repo1"), Repo("Repo2"))
`when`(repoRepository.getRepos("mine"))
.thenReturn(Observable.just(listIn))
repoViewModel.observeRepos().observeForever(observer)
repoViewModel.getRepos("mine")
val listOut = listOf(Repo("Repo1"), Repo("Repo2"))
verify(observer)
.onChanged(argThat(RepoMatcher(DataWrapper(listOut))))
}
}
Я могу выполнить каждый тест по отдельности, но не весь пакет,Я пытался сбросить макеты после каждого теста, создать одного наблюдателя для каждого теста или создать экземпляр каждого фиктивного объекта внутри каждого теста, без кубиков.
Запуск тестов в Android Studio 3.2.1, в app / xxx /test
mockito 2.8.47
java 1.8.0_191