본문 바로가기
안드로이드/UnitTest

안드로이드 AndroidTest (room dao test)

by 김어찐 2022. 12. 11.
728x90

 

 

 

@RunWith(AndoridJUnit::class) 작성

dependency 추가해야 사용할 수 있음

testImplementation "androidx.test:core:1.5.0"

 

package com.ej.tmdbclient.data.db

import android.app.Application
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import androidx.room.Room
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.ej.tmdbclient.data.model.movie.Movie
import com.google.common.truth.Truth
import kotlinx.coroutines.runBlocking
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith


@RunWith(AndroidJUnit4::class)
class MovieDaoTest {
    @get:Rule
    var instantTaskExecutorRule = InstantTaskExecutorRule()

    private lateinit var dao:MovieDao
    private lateinit var database: TMDBDatabase

    @Before
    fun setUp() {
        database = Room.inMemoryDatabaseBuilder(
            ApplicationProvider.getApplicationContext(),
            TMDBDatabase::class.java
        ).build()

        dao = database.movieDao()
    }

    @After
    fun tearDown() {
        database.close()
    }

    @Test
    fun saveMoviesTest() {
        return runBlocking {
            val movies = listOf(
                Movie(1,"overview1","pasterPaht1","data1","title1"),
                Movie(2,"overview2","pasterPaht2","data2","title2"),
                Movie(3,"overview3","pasterPaht3","data3","title3"),
            )
            dao.saveMovies(movies)

            val allMovies = dao.getMovies()
            Truth.assertThat(allMovies).isEqualTo(movies)
        }
    }

    @Test
    fun deleteMoviesTest() {
        return runBlocking {
            val movies = listOf(
                Movie(1,"overview1","pasterPaht1","data1","title1"),
                Movie(2,"overview2","pasterPaht2","data2","title2"),
                Movie(3,"overview3","pasterPaht3","data3","title3"),
            )
            dao.saveMovies(movies)
            dao.deleteAllMovies()
            val movieReult = dao.getMovies()
            Truth.assertThat(movieReult).isEmpty()
        }

    }
}
728x90

'안드로이드 > UnitTest' 카테고리의 다른 글

안드로이드 테스트 Mock Web Server  (0) 2022.12.13
안드로이드 livedata 테스트  (0) 2022.12.11
안드로이드 UnitTest Mock  (0) 2022.12.11
안드로이드 UnitTest  (0) 2022.12.11