Android studio Junit-需要Mockito,但未调用

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

我正在尝试使用junit测试我的类MoviesRepository:

@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(电影)
}
})
}
返回电影结果
}
有人能提出一些解决办法吗