[android] Espresso 테스트 패턴

Android 앱을 개발하다보면 사용자 화면의 동작을 테스트하는 것은 매우 중요합니다. Espresso는 안드로이드 앱의 UI 테스트를 위한 강력한 도구입니다. 이번 블로그에서는 Espresso 테스트를 작성할 때 유용한 패턴과 관례를 살펴보겠습니다.

왜 테스트 패턴이 필요한가?

효율적인 테스트 작성을 위해서는 일관된 패턴과 관례를 따르는 것이 중요합니다. 이를 통해 테스트 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.

테스트 패턴과 관례

1. Arrange, Act, Assert (AAA) 패턴

AAA 패턴은 테스트 코드를 세 가지 부분으로 나누어 작성하는 패턴입니다.

이러한 패턴을 따르면 테스트 코드의 가독성이 향상되고, 테스트 메소드의 목적을 명확하게 알 수 있습니다.

2. 테스트 메소드 네이밍 규칙

테스트 메소드의 이름은 해당 테스트가 무엇을 하는지 명확하게 설명해야 합니다. 일반적으로 “테스트대상_조건_기대결과”와 같은 형식을 따릅니다. 예를 들어, “login_success_shouldNavigateToHomePage”과 같은 형태입니다.

3. 테스트 데이터의 분리

테스트 데이터는 테스트 코드와 분리하여 관리하는 것이 좋습니다. 이를 통해 데이터의 변경이나 업데이트가 필요할 때 유연하게 대처할 수 있습니다.

예제

아래는 Espresso를 사용하여 로그인 화면을 테스트하는 예제 코드입니다.

@RunWith(AndroidJUnit4.class)
public class LoginActivityTest {

    @Rule
    public ActivityTestRule<LoginActivity> activityTestRule 
        = new ActivityTestRule<>(LoginActivity.class);

    @Test
    public void login_success_shouldNavigateToHomePage() {
        onView(withId(R.id.editText_email)).perform(typeText("user@example.com"));
        onView(withId(R.id.editText_password)).perform(typeText("password"), closeSoftKeyboard());
        onView(withId(R.id.button_login)).perform(click());
        intended(hasComponent(new ComponentName(getTargetContext(), HomePageActivity.class)));
    }
}

결론

효율적인 테스트 작성을 위해 AAA 패턴과 같은 테스트 관례를 따르는 것이 중요합니다. 이러한 관례를 지키면서 명확하고 유지보수 가능한 테스트 코드를 작성할 수 있습니다.