Исключение ожидаемого значения Junit - PullRequest
0 голосов
/ 20 февраля 2020

Я пишу тест, чтобы проверить мой репозиторий. Я заметил, что ожидаемое возвращаемое значение соответствует фактическому значению, за исключением того, что фактическое значение заключено в "<>".

Я не знаю, почему это происходит.

@ExperimentalCoroutinesApi
@RunWith(AndroidJUnit4::class)
@Config(sdk = [Build.VERSION_CODES.O_MR1])
class MovieRepositoryTest{
    @get:Rule
    var instantExecutorRule = InstantTaskExecutorRule()
    private val movie1 = MovieEntity("Title1", "https://movie1.jpg", 3, "Movie1Overview", "Jan 2021")
    private val movie2 = MovieEntity("Title2", "https://movie2.jpg", 3, "Movie2Overview", "Jan 2022")
    private val movie3 = MovieEntity("Title3", "https://movie3.jpg", 3, "Movie2Overview", "Jan 2023")
    private val remoteTasks = mutableListOf(movie3).sortedBy { it.id }
    private val localTasks = mutableListOf(movie1, movie2).sortedBy { it.id }

    private lateinit var tasksRemoteDataSource: FakeDataSource<MovieEntity>
    private lateinit var tasksLocalDataSource: FakeDataSource<MovieEntity>
    private lateinit var moviesRepository: MoviesRepoInterface

    @Before
    fun createRepository() {
        tasksRemoteDataSource = FakeDataSource(remoteTasks.toMutableList())
        tasksLocalDataSource = FakeDataSource(localTasks.toMutableList())
        moviesRepository = MovieRepository(tasksRemoteDataSource, tasksLocalDataSource)

    }

    @Test
    fun getRemoteMovies_RequestAllMovie()= runBlockingTest{


        val movies = moviesRepository.getMovies(false, ApplicationProvider.getApplicationContext())

        assertEquals(movies.getOrAwaitValue(), IsEqual<List<MovieEntity>>(localTasks))

    }

}

Ошибка

java.lang.AssertionError: 
Expected :[com.darotapp.cornflix.data.local.database.MovieEntity@3843fe46, com.darotapp.cornflix.data.local.database.MovieEntity@1b40b010]
Actual   :<[com.darotapp.cornflix.data.local.database.MovieEntity@3843fe46, com.darotapp.cornflix.data.local.database.MovieEntity@1b40b010]>

Класс данных для таблицы ниже

Таблица

@Entity
data class MovieEntity(
    var title: String?,
    var movieImage:String?,
    var rating:Int?,
    var overView:String?,
    var releaseDate:String?


): Serializable {
    operator fun component1(): String? = title
    operator fun component2(): String? = movieImage
    operator fun component3(): Int? = rating
    operator fun component4(): String? = overView
    operator fun component5(): String? = releaseDate

    @PrimaryKey()
    var id: Int = 0
    var favourite:Boolean = false
    var movieId:String? = ""


}

1 Ответ

1 голос
/ 20 февраля 2020

Я наконец понял это. Проблема была в использовании IsEqual. Я смог исправить это с помощью кода ниже.


       val movies = moviesRepository.getMovies(false, ApplicationProvider.getApplicationContext())

       assertEquals(movies?.value, Matchers.equalTo(localTasks))

...