[kotlin] 안드로이드 UI 테스트 데이터 동기화 테스트

안드로이드 앱을 개발하다 보면 UI 테스트를 작성해야 하는 경우가 많습니다. 이때 UI 테스트에서 서버에서 가져온 데이터를 사용해야 하는 경우가 있습니다. 데이터 동기화 테스트는 안드로이드 UI 테스트에서 서버에서 가져온 데이터를 동기화하는 방법을 테스트하는 것입니다.

데이터 모델 및 서비스 생성

가장 먼저, 테스트할 데이터 모델과 서비스를 생성해야 합니다. 데이터 모델은 서버에서 가져올 데이터의 형태를 정의하고, 서비스는 데이터를 서버에서 가져오는 역할을 담당합니다.

// Data Model
data class Item(val id: Int, val name: String)

// Service
class ItemService {
    fun fetchItems(): List<Item> {
        // 서버에서 데이터를 가져와서 반환
    }
}

데이터 동기화 테스트 작성

이제 데이터 동기화 테스트를 작성해보겠습니다. 안드로이드 UI 테스트에서는 서버에서 가져온 데이터를 대체하는 방식으로 테스트할 수 있습니다.

@RunWith(AndroidJUnit4::class)
class DataSyncTest {

    @get:Rule
    val activityTestRule = ActivityTestRule(MainActivity::class.java)

    @Test
    fun testDataSync() {
        // 데이터를 대체하는 가짜 데이터로 설정
        val mockItems = listOf(Item(1, "MockItem1"), Item(2, "MockItem2"))

        // 서비스의 fetchItems 메서드를 가짜 데이터로 오버라이드
        val itemService = mock(ItemService::class.java) {
            on { fetchItems() } doReturn mockItems
        }

        // 앱 실행 및 데이터 동기화
        val activity = activityTestRule.activity as MainActivity
        activity.syncData(itemService)

        // 데이터가 제대로 동기화 되었는지 확인
        onView(withText("MockItem1")).check(matches(isDisplayed()))
        onView(withText("MockItem2")).check(matches(isDisplayed()))
    }
}

위의 코드는 안드로이드 UI 테스트에서 데이터 동기화를 테스트하는 예시입니다. DataSyncTest 클래스에서는 testDataSync 메서드를 이용해 데이터 동기화를 테스트하고, 가짜 데이터를 사용해 서버에서 가져온 데이터와 동일한 동작을 하는지 확인합니다.

결론

안드로이드 UI 테스트에서 서버에서 가져온 데이터를 동기화하는 과정을 테스트하는 것은 중요한 부분입니다. 이를 통해 데이터 표시 및 동작이 올바르게 되는지 확인하여 안정적인 앱을 제공할 수 있습니다.

참고