Espresso

Espresso를 사용하면 간결하고 아름답고 신뢰할 수 있는 Android UI 테스트를 작성할 수 있습니다.

다음 코드 스니펫은 Espresso 테스트의 예를 보여줍니다.

Kotlin

@Test
fun greeterSaysHello() {
    onView(withId(R.id.name_field)).perform(typeText("Steve"))
    onView(withId(R.id.greet_button)).perform(click())
    onView(withText("Hello Steve!")).check(matches(isDisplayed()))
}

Java

@Test
public void greeterSaysHello() {
    onView(withId(R.id.name_field)).perform(typeText("Steve"));
    onView(withId(R.id.greet_button)).perform(click());
    onView(withText("Hello Steve!")).check(matches(isDisplayed()));
}

핵심 API는 작고 예측 가능하며 배우기 쉬우며 맞춤설정이 가능합니다. Espresso 테스트는 방해가 되는 상용구 콘텐츠, 맞춤 인프라 또는 지저분한 구현 세부정보를 방해하지 않고 기대치, 상호작용, 어설션을 명확하게 설명합니다.

Espresso 테스트는 최적의 방식으로 빠르게 실행됩니다. 애플리케이션 UI가 저장 상태일 때 애플리케이션 UI에서 조작하고 어설션하는 동안 대기, 동기화, 절전 모드, 폴링을 뒤로 옮길 수 있습니다.

타겟층

Espresso는 자동화된 테스트가 개발 수명 주기의 필수적인 부분이라고 생각하는 개발자를 대상으로 합니다. Espresso는 블랙박스 테스트에 사용할 수 있지만 테스트 중인 코드베이스에 익숙한 사용자는 Espresso의 모든 기능을 사용할 수 있습니다.

동기화 기능

테스트가 onView()를 호출할 때마다 Espresso는 다음 동기화 조건이 충족될 때까지 상응하는 UI 작업 또는 어설션을 실행하기 위해 대기합니다.

  • 메시지 큐에는 Espresso에서 즉시 처리해야 하는 메시지가 없습니다.
  • 현재 작업을 실행 중인 AsyncTask 인스턴스가 없습니다.
  • 모든 개발자 정의 유휴 리소스가 유휴 상태입니다.

Espresso는 이러한 검사를 실행하여 특정 시점에 하나의 UI 작업이나 어설션만 발생할 가능성을 크게 높입니다. 이 기능은 더 안정적이고 신뢰할 수 있는 테스트 결과를 제공합니다.

택배

  • espresso-core - 핵심 및 기본 View 매처, 작업, 어설션을 포함합니다. 기초레시피를 참고하세요.
  • espresso-web - WebView 지원에 관한 리소스가 포함되어 있습니다.
  • espresso-idling-resource - 백그라운드 작업과 동기화하는 Espresso의 메커니즘입니다.
  • espresso-contrib - DatePicker, RecyclerView, Drawer 작업, 접근성 확인, CountingIdlingResource가 포함된 외부 참여입니다.
  • espresso-intents - 밀폐 테스트를 위해 인텐트를 검증하고 스텁 처리하는 확장 프로그램입니다.
  • espresso-remote - Espresso의 멀티 프로세스 기능의 위치입니다.

최신 버전에 관한 자세한 내용은 출시 노트를 참고하세요.

추가 리소스

Android 테스트에서 Espresso를 사용하는 방법에 관한 자세한 내용은 다음 리소스를 참조하세요.

샘플