[android] Espresso 테스트 패턴
Android 앱을 개발하다보면 사용자 화면의 동작을 테스트하는 것은 매우 중요합니다. Espresso는 안드로이드 앱의 UI 테스트를 위한 강력한 도구입니다. 이번 블로그에서는 Espresso 테스트를 작성할 때 유용한 패턴과 관례를 살펴보겠습니다.
왜 테스트 패턴이 필요한가?
효율적인 테스트 작성을 위해서는 일관된 패턴과 관례를 따르는 것이 중요합니다. 이를 통해 테스트 코드의 가독성과 유지보수성을 향상시킬 수 있습니다.
테스트 패턴과 관례
1. Arrange, Act, Assert (AAA) 패턴
AAA 패턴은 테스트 코드를 세 가지 부분으로 나누어 작성하는 패턴입니다.
- Arrange: 테스트에서 필요한 객체를 생성하고 초기화합니다.
- Act: 테스트 동작을 수행합니다.
- Assert: 테스트 결과를 확인하고 기대하는 값과 실제 값이 일치하는지 검증합니다.
이러한 패턴을 따르면 테스트 코드의 가독성이 향상되고, 테스트 메소드의 목적을 명확하게 알 수 있습니다.
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 패턴과 같은 테스트 관례를 따르는 것이 중요합니다. 이러한 관례를 지키면서 명확하고 유지보수 가능한 테스트 코드를 작성할 수 있습니다.