[android] Espresso 테스트 모범 사례

안녕하세요! 이번에는 안드로이드 앱을 테스트하는 중요한 도구인 Espresso에 대해 알아보겠습니다. Espresso는 안드로이드 앱의 UI를 자동화하여 테스트하는 데 사용되는 강력한 도구입니다. 이제 Espresso를 사용할 때 유용한 일반적인 모범 사례에 대해 살펴보겠습니다.

목차

  1. UI 객체 참조를 잘 관리하기
  2. Idle 상태 관리하기
  3. 에러 핸들링
  4. 코드 재사용

UI 객체 참조를 잘 관리하기

Espresso 테스트 코드를 작성할 때, UI 객체에 대한 참조를 잘 관리하는 것이 중요합니다. ViewMatchers 클래스를 사용하여 레이아웃 내의 UI 객체를 찾아내고, ViewActions 클래스를 사용하여 객체와 상호작용하는 행동을 정의할 수 있습니다.

예를 들어, 다음과 같이 onView()를 사용하여 UI 객체를 참조하고 특정 작업을 수행할 수 있습니다.

onView(withId(R.id.button)).perform(click());

Idle 상태 관리하기

Espresso는 IdlingResource 인터페이스를 통해 앱의 Idle 상태를 추적하고 관리할 수 있습니다. 앱이 특정 작업을 수행하는 동안 Espresso를 일시정지하고 이벤트를 기다리도록 만들 수 있습니다.

IdlingRegistry.getInstance().register(idlingResource);

이렇게 하면 앱이 특정 작업을 수행 중일 때 Espresso가 대기 상태에 있게 되어 테스트가 안정적으로 진행될 수 있습니다.

에러 핸들링

Espresso 테스트 코드를 작성할 때 예외 처리와 에러 핸들링을 고려해야 합니다. 특히, 네트워크 요청이나 비동기 작업과 관련된 경우에는 적절한 에러 핸들링을 구현해야 합니다.

@Test
public void testNetworkError() {
    onView(withId(R.id.button)).perform(click());
    onView(withText("Network Error")).check(matches(isDisplayed()));
}

위의 코드에서는 네트워크 에러 메시지가 올바르게 표시되는지 확인하고 있습니다.

코드 재사용

마지막으로, 여러 테스트에서 동일한 동작을 수행해야 하는 경우, 코드를 재사용할 수 있는 방법을 고려해야 합니다. @Before 어노테이션을 사용하여 각 테스트 전에 실행되는 공통된 작업을 정의할 수 있습니다.

@Before
public void setUp() {
    // Initialize common resources for each test
}

Espresso를 사용하여 안드로이드 앱을 테스트할 때, 위의 모범 사례를 준수하면 효율적이고 안정적인 테스트 코드를 작성할 수 있습니다. 계속해서 테스트 코드를 개선하고 효율적으로 관리하기 위해 다양한 기술과 도구를 익히는 것이 중요합니다.

참고 자료