Android studio Junit-需要Mockito,但未调用
我正在尝试使用junit测试我的类MoviesRepository:Android studio Junit-需要Mockito,但未调用,android-studio,unit-testing,kotlin,mockito,Android Studio,Unit Testing,Kotlin,Mockito,我正在尝试使用junit测试我的类MoviesRepository: @Test fun getMovieDetail() { doAnswer { invocation -> (invocation.arguments[0] as RemoteDataSource.LoadMovieDetailCallback).onMovieDetailReceived( moviesResponses[0] ) null
@Test
fun getMovieDetail() {
doAnswer { invocation ->
(invocation.arguments[0] as RemoteDataSource.LoadMovieDetailCallback).onMovieDetailReceived(
moviesResponses[0]
)
null
}.`when`(remote).getMovieDetail(eq(movieId), any())
val moviesEntities = LiveDataTestUtil.getValue(moviesRepository.getMovieDetail(movieId))
verify(remote).getMovieDetail(eq(movieId), any())
assertNotNull(moviesEntities)
assertNotNull(moviesEntities.id)
assertEquals(moviesResponses[0].id, moviesEntities.id)
}
但是我想要但被调用了。也就是说,我的类remoteDataSource和FakeMoviesRepository中的remoteDataSource.getMoviesDetail()出现了问题
override fun getMovieDetail(movieId: String): LiveData<Movies> {
val movieResult = MutableLiveData<Movies>()
CoroutineScope(Dispatchers.IO).launch {
remoteDataSource.getMovieDetail(movieId, object : RemoteDataSource.LoadMovieDetailCallback{
override fun onMovieDetailReceived(movieResponse: Movies) {
val movie = Movies(
id = movieResponse.id,
title = movieResponse.title,
overview = movieResponse.overview,
poster = movieResponse.poster,
vote = movieResponse.vote,
release = movieResponse.release
)
movieResult.postValue(movie)
}
})
}
return movieResult
}
这是我的类RemoteDataSource
fun getMovieDetail(movieId: String, callback: LoadMovieDetailCallback) {
EspressoIdlingResource.increment()
movieApiClient.getMovieDetail(movieId)
.enqueue(object : Callback<Movies>{
override fun onResponse(call: Call<Movies>, response: Response<Movies>) {
if (response.isSuccessful)
response.body()?.let {
callback.onMovieDetailReceived(it)
}
}
override fun onFailure(call: Call<Movies>, t: Throwable) {
Log.e("OnFailure DetailMovie", t.message.toString())
}
})
EspressoIdlingResource.decrement()
}
fun getMovieDetail(movieId:String,callback:LoadMovieDetailCallback){
espressoidingresource.increment()
movieApiClient.getMovieDetail(movieId)
.enqueue(对象:回调{
覆盖fun onResponse(调用:调用,响应:响应){
if(response.issucessful)
response.body()?.let{
callback.onMovieDetailReceived(it)
}
}
覆盖失效时的乐趣(调用:调用,t:可丢弃){
Log.e(“OnFailure DetailMovie”,t.message.toString())
}
})
浓缩咖啡资源减量()
}
这是我班的假货记录
override fun getMovieDetail(movieId: String): LiveData<Movies> {
val movieResult = MutableLiveData<Movies>()
CoroutineScope(Dispatchers.IO).launch {
remoteDataSource.getMovieDetail(movieId, object : RemoteDataSource.LoadMovieDetailCallback{
override fun onMovieDetailReceived(movieResponse: Movies) {
val movie = Movies(
id = movieResponse.id,
title = movieResponse.title,
overview = movieResponse.overview,
poster = movieResponse.poster,
vote = movieResponse.vote,
release = movieResponse.release
)
movieResult.postValue(movie)
}
})
}
return movieResult
}
override-fun-getMovieDetail(movieId:String):LiveData{
val movieResult=MutableLiveData()
协同路由示波器(Dispatchers.IO)。启动{
remoteDataSource.getMovieDetail(movieId,对象:remoteDataSource.LoadMovieDetailCallback{
覆盖MovieDetailReceived上的乐趣(MovierResponse:Movies){
电影(
id=movieResponse.id,
title=movieResponse.title,
概述=movieResponse.overview,
poster=movieResponse.poster,
投票,
release=movieResponse.release
)
movieResult.postValue(电影)
}
})
}
返回电影结果
}
有人能提出一些解决办法吗