6월 3일의 ⁠#Android11: 베타 버전 출시 행사에 참여하세요.

테스트 출시 노트 자료실

AndroidX Test Espresso 3.1.1, Runner 1.1.1, Rules 1.1.1, Monitor 1.1.1 AndroidTestOrchestrator 1.1.1, Core 1.1.0, Truth 1.1.0, JUnit 1.1.0(2018-12-13)

이 버전은 AndroidX Test 1.1.0의 안정적인 출시입니다.

  • Core
    • ActivityScenario가 다른 활동을 시작하는 활동을 지원하도록 합니다.

AndroidX Test Espresso 3.1.1-beta01, Runner 1.1.1-beta01, Rules 1.1.1-beta01, Monitor 1.1.1-beta01 AndroidTestOrchestrator 1.1.1-beta01, Core 1.1.0-beta01 Truth 1.1.0-beta01, JUnit 1.1.0-beta01(2018-12-06)

  • Core
    • 새로운 core-ktx kotlin 확장 아티팩트! kotlin 친화적인 ActivityScenario.launchActivity API를 포함합니다.
    • 새로운 ActivityScenario API를 통해 사용자설정 인텐트로 활동을 실행합니다.
    • 새로운 ActivityScenario API를 통해 활동 결과를 수신합니다.
    • ActivityScenario를 종료할 수 있게 합니다.
  • Espresso
    • withResourceNameMatcher와 HumanReadables를 수정하여 API 28과 호환될 수 있도록 합니다.
    • ReplaceTextAction의 설명을 업데이트하여 stringToBeSet를 포함합니다.
    • Robolectric 일시중지 루퍼 모드에서 Espresso를 지원합니다.
  • JUnit
    • 새로운 ActivityScenarioRule API로 테스트 설정 및 해제 시 활동을 자동 실행하고 종료합니다.
    • 새로운 junit-ktx kotlin 확장 프로그램 아티팩트! kotlin 친화적인 ActivityScenarioRule API를 포함합니다.
  • Runner
    • 패키지를 받을 때 -e package 및 -e testFile의 동작이 일관되도록 합니다.
  • Truth
    • bool, parcelable, parcelableAsType BundleSubject API를 추가합니다.

AndroidX Test Espresso 3.1.0, Runner 1.1.0, Rules 1.1.0, Monitor 1.1.0 AndroidTestOrchestrator 1.1.0, Core 1.0.0 Truth 1.0.0, JUnit 1.0.0(2018-10-24)

  • 전체
    • minSdkVersion을 14로 설정하고 targetSdkVersion을 28로 설정합니다.
  • Espresso
    • 문자열이 아닌 유형과 호환되도록 withContentDescription을 수정합니다.
    • Robolectric에서 Espresso 사용 지원을 추가합니다.
    • 문제 72798625: Espresso ViewMatchers.withText는 textAllCaps가 사용 설정되면 작동하지 않습니다.
    • 모션 이벤트 시퀀스 주입 지원을 추가합니다.
  • 인텐트
    • 인텐트 목록을 검색할 수 있는 베타 API를 추가합니다. 이 API는 새로운 truth 어설션에 사용할 수 있습니다.
  • Runner
    • 인스턴트 앱 지원을 추가합니다.
    • androidx.test.runner.AndroidJUnit4를 지원 중단하고 androidx.test.ext.junit.runners.AndroidJUnit4로 교체합니다.
  • Monitor
    • androidx.test.InstrumentationRegistry를 지원 중단하고 androidx.test.platform.app.InstrumentationRegistry와 androidx.test.core.app.ApplicationProvider로 교체합니다.
  • AndroidTestOrchestrator
    • 'coverage' 및 'coverageFilePath' 인수가 모두 전달되는 때에만 orchestrator 적용 범위 처리를 사용 설정합니다.
    • -debug가 설정되어 있지만 ATO 테스트 사례를 나열하지 않는 경우에만 디버거를 기다립니다. 새로운 orchestratorDebug 플래그가 추가되어 orchestrator 자체를 디버깅합니다.
  • Core
    • 새로운 아티팩트! 다음에 관한 로컬 및 기기 내 테스트를 모두 지원하는 새로운 API를 포함합니다.
      • 컨텍스트 검색: ApplicationProvider
      • 활동 수명 주기 제어: ActivityScenario(베타)
      • MotionEvent, PackageInfo용 빌더
      • Parceables 유틸리티 클래스
  • Truth
    • 새로운 아티팩트! 알림, 인텐트, 번들, Parcelable 및 MotionEvent에 관한 맞춤 truth 주제를 포함합니다.
  • JUnit
    • 새로운 아티팩트! 로컬 및 기기 내 테스트를 모두 지원하는 JUnit runner 클래스 androidx.test.ext.junit.runners.AndroidJUnit4를 포함합니다.

Espresso 3.0.2-beta1, Runner 1.0.2-beta1, Rules 1.0.2-beta1, Monitor 1.0.2-beta1, AndroidTestOrchestrator 1.0.2-beta1(2018-04-16)

  • Espresso
    • API에 관한 브레이킹 체인지:
      • 문제 64062890을 통해 공개 API에서 Guava Optional을 사용했다는 것을 발견했습니다. 이 문제는 Google의 실수입니다. 이 문제를 해결하기 위해 이번 출시에서는 공개 API에 관한 브레이킹 체인지를 포함했습니다. 'android.support.test.espresso.util' 네임스페이스 아래에 EspressoOptional이라는 어글리(ugly) 래퍼를 도입하여 Guava Optional 클래스를 감쌌습니다. 유출된 Guava Optional API를 사용 중인 개발자는 이 새 버전으로 업데이트하는 동안 EspressoOptional을 사용하도록 가져오기와 참조를 변경해야 합니다. 이로 인해 불편을 끼쳐드려 죄송합니다.
    • 오류를 방지하기 위해 onView() 및 onData() API는 이제 @CheckReturnValue로 표시됩니다.
    • espresso-core POM 파일이 'rules' 종속성을 가져오지 않고 espresso-intents POM이 가져오도록 수정했습니다. espresso-core가 없으면 espresso-intents를 사용할 수 없으므로 이는 개발자를 위한 NoOp 변경사항입니다.
    • 문제 65486414: Espresso에 guava 종속성 누락
    • 문제 65576174: Espresso IdlingResourceRegistry.sync로 인해 두 번째 테스트 실패
    • 문제 65568629: IdlingRegistry를 사용하지 않는 Espresso.onIdle
    • 문제 69333598: espresso 3.0.1이 android 라이브러리 모듈의 play-services-auth:11.6.0과 호환되지 않음
    • 문제 64062890: AdapterViewProtocol 인터페이스에 의해 노출되는 내부 선택사항 유형
    • 문제 64091847: Espresso 3.0.0이 테스트 실행기에 의존해서는 안 됨
    • 문제 73722050: espresso-contrib 3.0.2-alpha1 패키지 android.arch.{lifecycle/core} 클래스
  • Espresso-remote
    • 새로운 아티팩트입니다. espresso-core 아티팩트 외부에서 Espresso의 다중 프로세스 기능을 모두 분리했습니다. 이제 더 깔끔하고 espresso-core의 전체 크기와 메서드 수가 크게 감소됩니다.
  • Runner
    • 바인더 트랜잭션에 비해 너무 큰 경우 스택 추적을 잘라냅니다. AJUR은 바인더 IPC를 통해 AM에 오류를 다시 보고해야 하므로 바인더 트랜잭션 한도(프로세스당 1MB)를 초과하지 않아야 합니다.
    • 문제 65828576: @Ignore를 사용하여 클래스에서 테스트를 실행할 때 TestRequestBuilder 충돌 발생
    • 문제 37057596: @BeforeClass에서 오류가 처리되지 않음
  • Rules
    • 수명주기 변경 후에 테스트 중인 활동 관련 참조를 사용 허가해야 합니다. 이제 테스트 기간 동안 #getActivity()에서 가져온 참조를 사용하여 활동을 직접 조작할 수 있습니다. 활동을 마치고 다시 시작하면 이제 #getActivity()에 의해 반환되는 참조가 항상 활동의 현재 인스턴스를 가리킵니다.
    • 문제 64389280: GrantPermissionRule이 WRITE_EXTERNAL_STORAGE를 제공하지 않음
    • 문제 37065965: 방향 변경 후 ActivityTestRule이 활동을 유출함
    • 문제 75254050: 구성 변경 중에 ActivityTestRule이 활동 인스턴스를 업데이트하지 않음
    • 문제 64464625: 활동의 finish() 메서드에서 UI 작업을 실시할 수 없음
  • AndroidTestOrchestrator
    • -e coverage true -e coverageFilePath /sdcard/foo/ 플래그를 전달하여 지정된 위치에서 노출 범위 파일을 생성합니다. 이 경우 앱이 지정된 위치에 쓸 수 있는 권한이 있어야 합니다. 노출 범위 파일 이름 지정 규칙은 이제 com.foo.Class#method1.ec와 같습니다. 이는 격리된 모드에서 실행하는 경우에만 지원됩니다. 또한 AndroidJUnitRunner의 coverageFile 플래그와 함께 사용할 수 없습니다. 생성된 노출 범위 파일이 서로 덮어쓰기 때문입니다.
    • Orchestrator가 테스트 호출 간에 pm clear context.getPackageName()pm clear targetContext.getPackageName() 명령을 실행하도록 하려면 -e clearPackageData 플래그를 전달합니다. clear 명령의 컨텍스트는 테스트 중인 앱 컨텍스트입니다.
    • 빈 테스트(타겟 내에 @Test 없음)를 실행할 때 테스트 결과가 기존 모드와 다른 문제를 수정했습니다.
    • 문제 72758547: 테스트 Orchestrator로 인해 Jacoco 노출 범위 데이터가 완료되지 않고 마지막 테스트 실행 데이터만 있습니다.
    • 문제 67916042: Android 테스트 Orchestrator: OutOfMemory로 인해 프로세스 충돌 시 실행이 중지됩니다.
    • 문제 77752735: TransactionTooLargeException으로 Orchestrator가 충돌함
    • 문제 77549481: 테스트를 실행할 때마다 테스트 Orchestrator가 "pm clear"를 실행해야 합니다.

Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1(2017-12-05)

  • Espresso

    • Intents가 이제 호출 가능한 응답을 가지므로, 실행된 인텐트를 캡처한 후 그러나 Instrumentation.ActivityResult 객체를 반환하기 전에 테스트를 실행할 수 있습니다.
  • Runner

    • 테스트 실행 및 JUnit 기능이 없는 MonitoringInstrumentation이 필요한 사용자를 위해 모니터 maven 아티팩트 com.android.support.test:monitor:<version>를 분할합니다.

      Gradle에서는 monitor 모듈을 runner 모듈의 종속 항목으로 자동으로 가져오므로 com.android.support.test:runner:<version>를 사용하는 경우 모든 것이 예상한 대로 작동합니다.

    • 플래그 newRunListenerOrderMode를 추가했습니다. true인 경우 사용자 정의 리스너가 기본 리스너보다 먼저 실행됩니다. 결국 이 동작이 기본값이 될 것으로 예상합니다.

    • 문제 65828576: @Ignore로 주석 처리된 클래스(테스트 실행 또는 JUnit 기능이 없는 독립형)에서 테스트를 실행할 때 TestRequestBuilder가 충돌합니다.

  • AndroidTestOrchestrator

    • 이제 오케스트레이션되지 않은 AndroidJUnitRunner와 동일한 방식으로 빈 테스트를 처리합니다.
    • Orchestrator는 이제 AndroidJUnitRunner의 매우 큰 표준 출력을 처리할 수 있습니다.

Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1(2017-08-28)

  • Espresso

    • 단계 디버거가 VM에 연결될 때 onTimeout()을 억제하도록 IdlingPolicy 옵션을 추가했습니다.
    • 문제 64024656, 6424758664525881: 사용자가 -e 클래스 러너 인수를 포함하여 특정 클래스를 로드하지 않을 경우 실패한 클래스 로드 관련 오류를 보고하지 않습니다.
    • 문제 64877246: 소스 JAR 파일에 누락된 클래스를 추가합니다.
  • Runner

    • 간소해진 ShardingFilter 논리.
    • 문제 65025743: @RequiresDevice 필터가 이제 FTL 에뮬레이터를 지원합니다.
  • AndroidTestOrchestrator

    • 오류를 중복해서 보고하지 않습니다. 실패 후 테스트 프로세스가 충돌하는 경우 이제 해당 테스트와 관련한 오류가 한 번만 보고됩니다.
    • Orchestrator용 Javadoc를 수정했습니다.
    • 이제 원격 프로세스가 충돌할 경우 테스트가 누락된 것으로 표시됩니다.
    • 이제 무시된 테스트 사례를 처리합니다.
    • 이제 기존 결과와 일치하도록 바닥글에서 무시된 테스트 사례를 제외합니다.
    • 런타임 권한 문제를 수정했습니다. Android 7.0(API 수준 24) 이상에서는 이제 테스트 보고서가 SD 카드에 기록됩니다.

Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0(2017-07-25, 알림)

브레이킹 체인지

  • 모든 아티팩트
    • 15 미만 API 수준 지원 중단 – 사용자에게 업그레이드할 수 있는 시간을 제공하기 위해 최소 SDK는 여전히 API 수준 9를 가리킵니다.
  • Espresso
    • 지원 중단된 android.support.test.espresso.contrib.CountingIdlingResource 클래스를 삭제하고 다음 클래스로 이동했습니다. android.support.test.espresso.idling.CountingIdlingResource
    • Guava가 이제 다른 '내부' 네임스페이스로 jarjar되었습니다. 실수로 Espresso 네임스페이스를 통해 Guava API를 사용할 경우 문제가 발생할 수 있습니다.
      • 샤딩된 Guava(.core.deps.guava.)에 관한 참조를 제거합니다.
      • 지원 라이브러리 버전을 25.4.0 이상으로 업그레이드합니다.

알려진 문제

  • AndroidTestOrchestrator
    • -e numShards-e shardIndex 러너 인수는 현재 지원되지 않습니다.
    • 매개변수화된 테스트는 현재 지원되지 않습니다.

새로운 기능

  • Runner
    • InterceptingActivityFactorySingleActivityFactory - startService()sendBroadcast()와 같은 메서드를 재정의하여 외부 세계와 격리된 상태에서 활동을 테스트할 수 있는 기능을 제공합니다.
    • JUnitParamsAndroidJUnitRunner와 함께 사용할 수 있도록 지원을 추가합니다.
    • 핵심 테스트 실행기 레벨에서 @UiThreadTest 처리를 시작하고 @UiThreadTestRule 사용을 중단합니다. 그러면 @Before@After로 주석 처리된 메서드에서 @UiThreadTest 주석을 직접 사용할 수 있습니다.
    • @SdkSupress 주석이 이제 maxSdkVersion 값을 지원합니다(문제 37067792).
    • -e classLoader - 실행기 인수를 사용하여 클래스 로더를 전달하는 기능을 제공합니다.
    • -e filter - 실행기 인수를 사용하여 지정할 맞춤 JUnit 필터 지원을 추가합니다.
    • -e runnerBuilder – 개발자가 특정 클래스에 대해 실행 가능한지 여부와 실행 방법을 결정할 수 있는 RunnerBuilder의 자체 구현을 제공할 수 있습니다.
  • Rules
  • AndroidTestOrchestrator
    • Android Test Orchestrator는 정확성과 격리를 중심으로 테스트를 수집하고 실행하는 새로운 방법을 제공합니다. Orchestrator는 독립적인 도구 프로세스로서, 테스트별로 하나의 도구 실행기 프로세스를 생성하고 결과를 수집합니다.
      • 애플리케이션이 비정상 종료될 경우 실행기 도구는 중단되지만 Orchestrator는 중단되지 않으므로 테스트 도구 모음을 계속 진행할 수 있습니다.
      • Orchestrator APK를 설치해야 합니다. 'com.android.support.test:orchestrator:1.0.0'
      • 버전 1.0에는 명령줄 인터페이스만 있으며, Android 스튜디오 및 Firebase Test Labs와 통합할 예정입니다.

버그 수정

  • Espresso
    • 루트 보기 동기화를 개선하여 비정상을 획기적으로 줄였습니다.
    • IdlingResourceRegistry 손상 수정
    • IdlingResource 객체 동기화 개선
    • 문제 37132680: Espresso가 대화상자 만들기가 완료될 때까지 기다리지 않고 다음 작업을 이행합니다.
    • 문제 37103280: Espresso가 ProGuard 소비자 규칙을 제공하므로 소비자가 규칙을 추가할 필요가 없습니다.
    • 문제 37094726: Espresso Intents에 불필요한 애플리케이션 라벨이 포함되어 있습니다.
    • 문제 37093953: Espresso: null/빈 오류 텍스트를 확인할 수 없습니다.
    • 문제 37071776: espresso-core가 Guava의 .pom 파일을 삽입합니다.
    • 문제 37062612: release()의 NPE
    • 문제 37063389: Guava 및 espresso-web에서 androidTest 종속 항목이 컴파일되지 않습니다.
    • 문제 37070533: Android 디자인 지원 라이브러리NavigationView 지원을 추가했습니다.
  • Runner
    • @UiThreadTest@Test(timeout = 123)와 함께 사용할 수 있도록 기능을 수정했습니다.
    • -e notClass 실행기 인수를 수정했습니다.
    • JUnit3 및 JUnit4 테스트 도구 모음과 ParameterizedEnclosed 실행기를 지원하도록 -e log를 수정했습니다.
    • 문제 37663530: 각 테스트 방법 전후에 모든 활동이 완료되도록 기다립니다.
    • 문제 37132680: Espresso가 대화상자 만들기가 완료될 때까지 기다리지 않고 다음 작업을 이행합니다.
    • 문제 37123213: @RequiresDevice가 x86_64 ABI에서 무시됩니다.
    • 문제 37101485: AndroidJUnitRunner의 일부 매니페스트 제공 인수(예: 테스트 크기, 주석, 디버그)가 무시됩니다.
    • 문제 37082857: Espresso에서 정적 객체에 관한 일부 동시 로드 테스트 실행이 실패합니다.
    • 문제 37063396: ProviderTestCase2로 컨텍스트가 초기화되지 않습니다(원인 NullPointerException).

기타 중요 변경사항

  • 이제 바이너리가 Google Maven을 통해 게시됩니다.
  • espresso-coreespresso-web JAR 파일 크기 축소 – 이제 삽입된 종속 항목에 ProGuard가 적용됩니다.
  • 이제 모든 .aar 파일에 ProGuard 규칙이 포함됩니다.
  • 출시된 아티팩트에 proguard_library.cfg 파일을 추가했습니다.
  • Tapper 인터페이스에 구현할 새 버전의 sendTap()이 있습니다.

외부 기여

Espresso 2.2.2, Runner/Rules 0.5(2016-02-22, 자동 출시)

새로운 기능

  • espresso
    • 문제 194253: Android 지원 디자인 라이브러리에서 NavigationView 지원 추가
    • 사용 설정된 애니메이션 및 전환 확인 기능을 추가했습니다.
    • ViewMatcher API: withResourceName()

버그 수정

  • espresso
    • 문제 195331: espresso-core가 Guava의 pom 파일을 삽입합니다.
    • 비활성 자료 집계를 espresso-contrib 외부로 이동했습니다.
  • rules
    • 문제 187249: Intents.release()의 NPE
  • runner
    • 문제 196066: AndroidJUnitRunner-e log true 인수가 실제 테스트를 우회하지 않습니다.
    • 실행기 onCreate()에서 디버거를 기다립니다.
    • 모든 지원되는 테스트 주석을 플랫폼 외부와 ATSL 내부로 이동했습니다.
    • JSBridge 없음 관련 스택 추적 덤프를 삭제했습니다.
    • AndroidAnnotatedBuilder를 수정했습니다.

기타 중요 변경사항

  • ActivityTestRule, UiThreadTestRule, IntentsTestRuleServiceTestRule이 베타 단계를 마쳤습니다.
  • 균일한 코드 서식 지정을 위한 코드 스타일 설정 파일을 추가했습니다.

Espresso 2.2.1, Runner/Rules 0.4(2015-09-15)

새로운 기능

  • rules
    • ActivityTestRule과 완벽하게 호환되는 새 IntentsTestRule 생성자를 추가했습니다.
  • runner
    • API 수준 15 이하를 위한 특수 케이스 multidex 설치를 추가했습니다.
    • 클래스 및 패키지에 제외 필터를 추가했습니다.
      • 특정 클래스에 해당하는 테스트를 제외한 모든 테스트 실행: adb shell am instrument -w -e notClass com.android.foo.FooTest
      • 한 가지를 제외한 모든 테스트 실행: adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo
      • 특정 패키지를 제외한 모든 테스트 실행: adb shell am instrument -w -e notPackage com.android.foo.bar

외부 기여

  • espresso
    • 157911: EditText 객체 관련 입력 유형을 위한 보기 매처를 추가합니다.
    • 157912: EditText 객체에서 오류 텍스트를 일치시키기 위한 보기 매처를 추가합니다.
    • 150674: 임의의 중력을 가진 창을 위한 DrawerActions 지원을 추가합니다.
    • 150744: DrawerActions가 더 이상 parentListener를 누출하지 않습니다.
    • 153303: '창의 개폐 여부' 검사에 중력이 지정되었습니다.
    • 157910: 출고 시 DrawerLayout 열기 및 닫기 작업을 추가합니다.

버그 수정

  • espresso
    • ViewActions.closeSoftKeyboard()를 통해 이제 소프트 키보드를 완전히 사라지게 할 수 있습니다.
    • API 수준 21 이상에서 Espresso의 Espresso.pressBack() 메서드와의 동기화 문제를 수정했습니다.
    • API 수준 23에서 키보드 해지 애니메이션의 동기화 문제를 해결했습니다.
  • rules
    • API 수준 23에서 ServiceTestRule을 수정했습니다. 항상 Intent를 명시적으로 사용하여 startService()를 호출해야 합니다.
  • runner
    • 중단된 Gradle JaCoCo 지원 문제를 수정했습니다.
    • 중단된 테스트 샤딩 지원 문제를 수정했습니다.
    • JUnit3 스타일 테스트 시간 초과 후 테스트 실행기의 일관되지 않은 상태를 해결했습니다.

기타 중요 변경사항

  • Javadoc 수정사항 및 오류 메시지 개선사항
  • 메서드 필터를 사용할 때 suite() 메서드를 무시하고 초기화 오류를 무시하지 않습니다.

Espresso 2.2/ATSL 0.3(2015-06-09)

새로운 기능

  • espresso-web 2.2
    • 새로운 WebView 지원
  • espresso-core 2.2
    • dagger v2를 사용하기 위해 이전
    • hamcrest v1.3을 사용하기 위해 이전
  • espresso-contrib 2.2
    • 접근성 검사
    • DrawerActions 중력 지원
  • rules 0.3
    • DisableOnAndroidDebug rule
  • runner 0.3
    • JUnit v4.10에서 JUnit v4.12로 업그레이드
    • Hamcrest v1.3을 사용하기 위해 이전

버그 수정

  • DrawerActions에서 ParentListener가 누출되는 문제를 수정했습니다.
  • 가정 실패가 이제 실패 테스트가 아닌 무시 테스트로 처리됩니다.
  • MonitoringInstrumentation에서 ExecutorService를 통해 활동 인스턴스가 유출되는 문제를 수정했습니다.
  • 중지된 상태로 멈춰 있는 고아 활동을 수정했습니다.
  • 스크롤 이벤트가 생성되지 않을 경우 true를 반환하도록 Until.scrollFinished()를 업데이트했습니다. UiObject2#setText()에서 잠재적 NPE로부터 보호합니다.

Espresso 2.1, Test Runner/Rules 0.2 및 UIAutomator 2.1.0(2015-04-21)

브레이킹 체인지

  • 테스트 실행기 아티팩트를 둘로 분할하고 이름을 com.android.support.test:testing-support-lib:0.1에서 com.android.support.test:runner:0.2com.android.support.test:rules:0.2로 변경했습니다.

새로운 기능

  • espresso-intents: 테스트 작성자가 발신 인텐트를 확인하여 제거하도록 허용하여 밀폐식 상호작용 테스트를 지원하는 Mockito와 유사한 API
    • IntentsTestRule: ActivityTestRule을 확장하고 기능적 UI 테스트에서 Espresso-Intents를 초기화한 후 릴리스했습니다.
  • espresso-core
    • ViewActions: 작업을 실행하기 전에 글로벌 어설션을 실행하는 기능을 추가했습니다. 이 기능은 기존 Espresso 테스트 도구 모음이 실행되는 동안 Espresso 위에 빌드되어 보기 계층의 상태를 검증하는 다른 프레임워크에 유용합니다.
    • ViewMatchers.withContentDescription() resId 오버로드
  • rules
    • ActivityTestRule: 이 규칙은 단일 활동의 기능 테스트를 제공합니다.
    • UiThreadRuleUiThreadTest 주석: 이 규칙은 애플리케이션의 기본 스레드 또는 UI 스레드에서 UiThreadTest로 주석 처리된 테스트 메서드를 실행하도록 허용합니다.
    • ServiceTestRule: 이 규칙은 서비스를 기능적으로 테스트합니다.
  • runner
    • ApplicationLifecycleCallback: 애플리케이션 수명 주기 이벤트 모니터링을 위한 콜백
    • 이제 Android manifest 파일에서 <meta-data> 태그를 사용하여 모든 실행기 인수를 지정할 수도 있습니다.
  • UIAutomator
    • UiDevice.dumpWindowHierarchy()가 이제 File 또는 OutputStream을 수락할 수 있습니다.

버그 수정

  • espresso
    • Hamcrest가 다음 커서를 진행할 수 있도록 열이 없는 경우 커서 매처는 이제 false를 반환합니다.
    • PreferenceMatchers withTitle을 포함하는 NullPointerException이 더 이상 발생하지 않습니다.
    • 유휴 리소스를 등록 취소해도 더 이상 Espresso에서 유휴 리소스가 사용 중이라고 간주하지 않습니다.
    • Espresso Contrib에서 사용되는 지원 주석 버전을 업데이트했습니다.
  • runner
    • AndroidJUnit4는 이제 실패한 가정이 있는 테스트를 건너뜁니다.
  • UIAutomator
    • StaleObjectException 방지를 위해 감시자를 실행합니다.

기타 중요 변경사항

  • 라틴어 이외 문자열로 텍스트를 입력할 수 없을 때 향상된 오류 메시지를 추가했습니다.

UIAutomator 2.0(2015-03-12)

UI Automator가 이제 Android 계측에 기반하므로 ./gradlew connectedCheck 명령어를 사용하여 테스트를 빌드하고 실행할 수 있습니다.

Espresso Version 2.0, Test Runner 0.1(출시일: 2014-12-19)

브레이킹 체인지

  • Espresso가 android.support.test.espresso에서 android.support.test.espresso라는 새 네임스페이스로 이동했습니다.
  • Espresso 아티팩트의 이름이 바뀌었습니다.
    • espresso-1.1.jar는 이제 espresso-core-release-2.0.jar입니다.
    • IdlingResource 인터페이스가 별도의 라이브러리로 이동되었습니다. espresso-idling-resource-release-2.0.jar
    • CountingIdlingResource가 이제 항상 espresso-contrib-release-2.0.jar에 있어야 합니다.
  • Guava 의존성 재구성을 지원하고 DEX 충돌(개발 문제의 주요 원인)을 방지하기 위해 선택적 (Guava 의존성)을 공개 API에서 삭제했습니다. 영향받는 메서드는 다음과 같습니다.
    • ViewAssertion.check()
    • HumanReadables.getViewHierarchyErrorMessage()

새로운 기능

  • 작업
    • ViewActions
      • replaceText()
      • openLink()
      • 위아래로 스와이프
    • espresso-contrib
      • RecyclerViewActions: RecyclerViews와의 상호작용을 처리합니다.
      • PickerActions: DateTime 선택도구와의 상호작용을 처리합니다.
  • 매처
    • RootMatchers
      • isPlatformPopup()
    • ViewMatchers
      • isJavascriptEnabled()
      • withSpinnerText()
      • withHint()
      • isSelected()
      • hasLinks()
    • LayoutMatchers: i18n 관련 레이아웃 테스트용 매처
    • CursorMatchers: Cursor 객체를 위한 매처 모음
  • 어설션
    • PositionAssertions(isLeftOf()isAbove() 포함): 화면에서 요소의 상대적 위치 확인을 위한 ViewAssertions 모음
    • LayoutAssertions: i18n 관련 레이아웃 테스트를 위한 어설션
  • 테스트 앱: 다양한 새 샘플 활동/테스트
  • 기타
    • Espresso.unregisterIdlingResources()Espresso.getIdlingResources(): IdlingResources 작업 유연성 강화
    • ViewInteraction.withFailureHandler(): onView()에서 실패 핸들러를 재정의할 수 있습니다.
    • CursorAdapters에 의해 지원되는 AdapterViewsonData() 지원

버그 수정

  • ViewMatchers.isDisplayed()는 전체 화면을 차지하는 보기와 일치하지만 더 이상 90% 이하로 표시되지 않습니다.
  • DrawerActions.openDrawer()에 스와이프 작업 호출을 실행해도 더 이상 IdlingResourceTimeoutException이 발생하지 않습니다.

기타 중요 변경사항

  • 빌드 도구가 Maven에서 Gradle로 전환되었습니다.
  • DEX 충돌을 방지하기 위해 Espresso 종속 항목(Guava, Dagger, Hamcrest)을 이동했습니다.
  • 유휴 리소스를 등록 및 등록 취소할 때 성공 또는 실패를 반환하도록 변경했습니다.
  • Lollipop 지원: 버전 관련 변경사항을 처리하기 위해 message.recycle()을 인터페이스 뒤에 배치합니다.
  • 타겟 SDK 레벨을 21로 전환 – 대부분 테스트 앱에 영향을 미칩니다.

버전 1.1 (출시일: 2014-01-08)

Espresso

  • 새로운 swipeLeftswipeRight ViewActions
  • 멀티 윈도우 지원: Espresso에서 작업을 실행할 타겟 창을 선택할 수 있는 고급 기능
  • TypeTextAction 개선: 미리 초점이 맞춰진 보기에 텍스트를 입력하여 텍스트를 쉽게 추가할 수 있습니다.
  • 다양한 버그 수정

Espresso Contrib 라이브러리

  • 이 새 라이브러리에는 Espresso를 보완하지만 핵심 라이브러리에 없는 기능이 포함되어 있습니다.
  • DrawerLayout에서 작업하기 위한 새 DrawerActions: Android 지원 라이브러리에 종속되므로 핵심 Espresso 라이브러리 외부에 유지합니다.

샘플 테스트

  • 테스트 앱과 동일한 패키지에 위치하도록 이러한 테스트를 재배치했습니다.
  • 중복 guava deps를 삭제하도록 Maven POM을 수정했습니다. 따라서 이제 mvn install이 작동해야 합니다.