[kotlin] 코틀린으로 안드로이드 UI 테스트 데이터베이스 연동

안드로이드 앱을 개발하면서 UI 테스트를 작성하는 것은 매우 중요합니다. 이때 테스트 데이터베이스를 통해 UI 테스트를 수행하면 더욱 효율적으로 앱을 테스트할 수 있습니다. 이번 블로그 게시물에서는 코틀린을 사용하여 안드로이드 UI 테스트와 데이터베이스를 연동하는 방법에 대해 알아보겠습니다.

1. 안드로이드 UI 테스트 데이터베이스 설정

먼저, 안드로이드 프로젝트의 build.gradle 파일에 테스트 데이터베이스에 필요한 의존성을 추가해야 합니다.

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

그런 다음, 안드로이드 앱의 테스트 데이터베이스를 초기화하고 설정해야 합니다.

@get:Rule
val instantTaskExecutorRule = InstantTaskExecutorRule()

private lateinit var myDatabase: MyDatabase

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

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

위의 코드에서는 InstantTaskExecutorRule을 사용하여 데이터베이스 작업을 메인 스레드에서 비동기적으로 수행하도록 합니다. 그리고 @Before 어노테이션을 사용하여 각 테스트 메서드가 실행되기 전에 데이터베이스를 초기화하고, @After 어노테이션을 사용하여 각 테스트가 완료된 후에 데이터베이스를 닫습니다.

2. UI 테스트 데이터베이스 활용

이제 UI 테스트에서 데이터베이스를 활용하여 테스트를 수행할 수 있습니다.

@Test
fun testDatabaseInsertion() {
    val item = Item("sample")
    myDatabase.itemDao().insertItem(item)

    val loadedItem = myDatabase.itemDao().getItemById(item.id)
    assertTrue(loadedItem == item)
}

위의 코드에서는 Item을 데이터베이스에 추가한 후, 해당 아이템을 불러와서 원본 아이템과 같은지를 확인하는 테스트를 작성하였습니다.

마치며

이렇게 안드로이드 UI 테스트와 데이터베이스를 코틀린으로 연동하여 사용할 수 있습니다. 테스트 데이터베이스를 활용하면 UI 테스트가 보다 견고하고 효율적으로 수행될 수 있습니다.

더 많은 정보를 원하시거나 궁금한 점이 있으시다면, 안드로이드 공식 문서를 참고하시기 바랍니다.

참고: Android Developer - Test