[android] Espresso 테스트 작성 방법

안녕하세요! 안드로이드 앱 개발을 하다 보면 Espresso를 이용하여 UI 테스트를 작성하는 경우가 많습니다. Espresso를 이용하면 사용자 인터페이스를 테스트하고 앱의 동작을 검증할 수 있습니다. 이번 포스트에서는 Espresso를 이용한 효과적인 테스트 작성 방법을 소개하겠습니다.

목차

Espresso 란?

Espresso는 안드로이드 앱의 UI를 테스트하기 위한 도구로, UI 상호작용 및 앱의 동작을 테스트하는 데 사용됩니다.

Espresso 설정 및 종속성 추가

먼저, 앱의 build.gradle 파일에 다음 종속성을 추가합니다:

androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'

그런 다음, MainActivityFragment 등의 UI를 테스트할 수 있는 Espresso 테스트 파일을 생성합니다.

기본 Espresso 테스트 작성

Espresso를 사용하여 기본적인 테스트를 작성해봅시다. 예를 들어, 앱의 버튼을 클릭하여 새로운 화면으로 이동하는 동작을 테스트하는 코드는 다음과 같습니다:

@RunWith(AndroidJUnit4.class)
public class MainActivityTest {

    @Rule
    public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule<>(MainActivity.class);

    @Test
    public void clickButton_opensNewActivity() {
        onView(withId(R.id.button)).perform(click());
        intended(hasComponent(NewActivity.class.getName()));
    }
}

위의 코드는 MainActivity의 버튼을 클릭하면 NewActivity로의 전환이 올바르게 이루어지는지를 테스트합니다.

고급 Espresso 테스트 작성

Espresso를 사용하여 RecyclerView나 ViewPager와 같은 고급 UI 컴포넌트를 테스트할 수도 있습니다. 아래는 RecyclerView의 아이템을 클릭하여 상세화면으로 이동하는 테스트 코드의 예시입니다:

@RunWith(AndroidJUnit4.class)
public class RecyclerViewTest {

    @Rule
    public ActivityTestRule<ListActivity> activityRule = new ActivityTestRule<>(ListActivity.class);

    @Test
    public void clickRecyclerViewItem_opensDetailScreen() {
        onView(withId(R.id.recyclerView)).perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
        intended(hasComponent(DetailActivity.class.getName()));
    }
}

위의 코드는 RecyclerView의 첫 번째 아이템을 클릭하여 상세화면으로의 전환이 올바르게 이루어지는지를 테스트합니다.

이상으로 Espresso를 사용한 안드로이드 앱의 UI 테스트 작성 방법에 대해 알아보았습니다. Espresso를 잘 활용하여 안전하고 효과적인 UI 테스트를 작성해보세요!