[android] 안드로이드 Room Database의 데이터베이스 테스트 케이스 작성

안드로이드 앱을 개발할 때 Room Database를 사용해 데이터를 저장하고 관리하는 경우가 많습니다. 데이터베이스에 대한 테스트 케이스를 작성하여 안정적인 앱을 만들 수 있습니다.

이 포스트에서는 안드로이드 앱에서 Room Database의 데이터베이스 테스트 케이스를 작성하는 방법에 대해 알아보겠습니다.

목차

  1. Room Database 테스트 케이스 작성이 필요한 이유
  2. Room Database 테스트용 인메모리 데이터베이스 설정
  3. 데이터베이스 테스트 케이스 작성
  4. 참고 자료

1. Room Database 테스트 케이스 작성이 필요한 이유

데이터베이스 관련 기능은 앱의 핵심적인 부분이기 때문에 안정성이 매우 중요합니다. Room Database의 테스트 케이스를 작성하여 데이터베이스 연산이 예상대로 수행되는지 확인할 수 있습니다. 이를 통해 앱이 예상치 못한 데이터베이스 오류로 인해 중단되는 상황을 방지할 수 있습니다.

2. Room Database 테스트용 인메모리 데이터베이스 설정

Room Database의 테스트를 위해 인메모리 데이터베이스를 사용하면 테스트 중에 실제 데이터베이스를 사용하지 않고도 테스트를 진행할 수 있습니다. 이를 통해 빠른 속도로 테스트를 수행할 수 있습니다.

@Database(entities = arrayOf(User::class), version = 1)
@TypeConverters(Converters::class)
abstract class TestAppDatabase : RoomDatabase() {
    abstract fun testUserDao(): TestUserDao

    companion object {
        // in-memory database builder를 생성하여 테스트용 데이터베이스를 만듭니다
        fun create(): TestAppDatabase {
            return Room.inMemoryDatabaseBuilder(
                ApplicationProvider.getApplicationContext<Context>(),
                TestAppDatabase::class.java
            ).build()
        }
    }
}

3. 데이터베이스 테스트 케이스 작성

데이터베이스 테스트 케이스를 작성하여 Room Database의 CRUD(Create, Read, Update, Delete) 연산이 정상적으로 수행되는지 확인할 수 있습니다.

@RunWith(AndroidJUnit4::class)
class UserDaoTest {
    private lateinit var database: TestAppDatabase
    private lateinit var userDao: TestUserDao

    @Before
    fun setup() {
        // 테스트용 데이터베이스를 생성합니다
        database = TestAppDatabase.create()
        userDao = database.testUserDao()
    }

    @After
    fun tearDown() {
        // 테스트 후 데이터베이스를 닫습니다
        database.close()
    }

    @Test
    fun insertAndRetrieveUser() {
        val user = User("username", "email")
        userDao.insert(user)
        val retrievedUser = userDao.getUserByUsername("username")
        assertEquals(retrievedUser, user)
    }
}

위의 테스트 케이스에서는 사용자를 삽입(insert)하고 조회(retrieve)하여 예상된 결과와 일치하는지를 확인합니다.

4. 참고 자료

앞서 설명한 방법을 통해 안드로이드 Room Database의 데이터베이스 테스트 케이스를 작성할 수 있습니다. 데이터베이스 테스트 케이스를 작성하여 안전하고 안정적인 데이터베이스 연산이 이루어지도록 앱을 만들 수 있습니다.