본 예제는 코드랩에서 제공된 TO-DO app starter code 앱 예제를 따릅니다. 예제 코드 관련하여 자세한 내용은 코드랩을 참조하세요. https://developer.android.com/codelabs/advanced-android-kotlin-training-testing-basics#0

이번 문서에서는 뷰모델의 LiveData 에 이벤트 객체가 정상적으로 트리거되는지 어설션 구문을 적용하여 테스트해보자.

이전 예제에서 작성한 테스트 코드에 이어서 진행하도록 한다.

@Test
fun addNewTask_setsNewTaskEvent() {

    // Given a fresh ViewModel
    val tasksViewModel = TasksViewModel(ApplicationProvider.getApplicationContext())

    // When adding a new task
    tasksViewModel.addNewTask()

    // Then the new task event is triggered
    **// TODO test LiveData**

}

LiveData를 테스트하기 위한 사전 작업들이 있다.

이에 대해 자세히 알아보자.

1. InstantTaskExecutorRule 사용하기

LiveData를 테스트 하기 전에 JUnit Rule 을 추가한다.

(JUnit Rule은 정의된 규칙들이 테스트 전 / 후에 실행되도록 한다.)

여기서는 InstantTaskExecutorRule 을 사용하는데,

이 규칙은 AAC에 관련된 모든 백그라운드 작업을 동일한 스레드에서 실행하도록 한다.