[android] 안드로이드 Room Database의 데이터베이스 테스트 방법

Room 데이터베이스를 테스트하는 데는 몇 가지 중요한 요소가 있습니다. 이전에 작성한 코드를 변경하지 않고 데이터베이스를 테스트하는 방법, 데이터베이스의 테스트용 인스턴스를 만드는 방법 등이 그 중 일부입니다.

데이터베이스 테스트를 위한 설정

Room 데이터베이스를 테스트하기 위해서는 androidx.room:room-testing 라이브러리를 사용해야 합니다. 이 라이브러리에는 Room 데이터베이스를 테스트하고 모의(mock) 객체를 생성하는 데 필요한 클래스와 메서드가 포함되어 있습니다.

먼저, build.gradle 파일에서 테스트 의존성을 추가해야 합니다.

androidTestImplementation "androidx.room:room-testing:$roomVersion"

여기서 $roomVersion은 사용 중인 Room 라이브러리의 버전입니다.

데이터베이스 테스트 작성하기

Room 데이터베이스를 테스트하기 위해서는 @RunWith(AndroidJUnit4::class) 어노테이션을 사용한 JUnit 테스트 클래스를 작성해야 합니다. 또한, 테스트에서는 Room.inMemoryDatabaseBuilder()를 사용하여 인메모리 데이터베이스를 만들고, 테스트용 데이터를 채워넣어야 합니다.

아래는 Room 데이터베이스의 DAO(Data Access Object)를 테스트하는 예제 코드입니다.

@RunWith(AndroidJUnit4::class)
class MyDatabaseTest {

    private lateinit var myDatabase: MyDatabase
    private lateinit var myDao: MyDao

    @Before
    fun setup() {
        val context = InstrumentationRegistry.getInstrumentation().targetContext
        myDatabase = Room.inMemoryDatabaseBuilder(context, MyDatabase::class.java).build()
        myDao = myDatabase.myDao()
    }

    @After
    fun closeDatabase() {
        myDatabase.close()
    }

    @Test
    fun testDataInsertionAndRetrieval() {
        val myData = MyData(1, "Example")
        myDao.insert(myData)
        val retrievedData = myDao.getById(1)
        assertEquals(myData, retrievedData)
    }
}

이러한 방식으로 Room 데이터베이스를 테스트할 수 있습니다. 이 테스트 코드를 실행하면 실제 데이터베이스를 사용하지 않고도 데이터베이스 작업을 테스트할 수 있습니다.

참고 문헌: Android Developers - Test Room