[kotlin] MVVM 아키텍처에서의 UI 단위 테스트 방법

MVVM(Mode-View-ViewModel) 아키텍처에서는 UI 단위 테스트를 작성하여 앱의 UI 요소들이 원하는 대로 동작하는 지 확인할 수 있습니다. UI 단위 테스트는 ViewModel의 로직이 UI를 올바르게 조작하는지 확인하고, 뷰모델이 UI에 적절한 데이터를 제공하는지를 검증합니다.

아래는 MVVM 아키텍처에서 UI 단위 테스트를 작성하는 방법입니다.

1. 의존성 주입 설정하기

의존성 주입을 사용하여 ViewModel을 테스트합니다. Koin 또는 Dagger와 같은 의존성 주입 라이브러리를 사용하여 ViewModel과 테스트 뷰를 주입합니다.

// Example using Koin
val myModule = module {
    viewModel { MyViewModel(get()) }
}

2. 테스트용 뷰모델 생성

@Test
fun testMyViewModel() {
    // 테스트용 데이터를 주입하여 뷰모델을 생성
    val viewModel = MyViewModel(MockRepository())
    
    // 뷰모델의 메서드를 호출하여 기대되는 결과를 확인
    viewModel.loadData()
    assertEquals("Expected result", viewModel.data.value)
}

3. 뷰모델에서 UI 업데이트 확인

@Test
fun testMyFragment() {
    val scenario = launchFragmentInContainer<MyFragment>()

    // LiveData의 변화를 관찰하여 UI 업데이트를 확인
    scenario.onFragment {
        it.viewModel.loadData()
        assertEquals("Expected result", it.textView.text)
    }
}

위와 같이 MVVM 아키텍처에서의 UI 단위 테스트를 통해 ViewModel과 UI 요소들이 올바르게 동작하는지를 검증할 수 있습니다.

참고 자료