Multiprocess Espresso

앱이 성장함에 따라 앱 구성 요소 중 일부를 배치하는 것이 유용할 수 있습니다. 다른 프로세스에서 발생합니다. 이러한 영역에서 앱 구성요소를 테스트하려면 기본이 아닌 프로세스를 실행하면 Multiprocess Espresso의 기능을 사용할 수 있습니다. Android 8.0 (API 수준 26) 이상에서 사용할 수 있는 이 도구를 사용하면 다음 작업을 할 수 있습니다. 앱의 프로세스를 가로지르는 앱의 UI 상호작용을 원활하게 테스트 Espresso의 동기화 보장을 유지하면서 경계를 구현합니다.

Multiprocess Espresso를 사용할 때는 다음 버전 관리와 범위를 유지하세요. 염두에 두어야 할 사항:

  • 앱이 Android 8.0(API 레벨 26) 이상을 타겟팅해야 합니다.
  • 이 도구는 개발자가 앱의 패키지에서 찾을 수 있습니다. 외부 프로세스는 테스트할 수 없습니다.

도구 사용

Multiprocess Espresso를 사용하여 앱 내의 프로세스를 테스트하려면 참조를 추가하세요. 앱의 build.gradle 파일에 espresso-remote 아티팩트에 추가합니다.

app/build.gradle

Groovy

dependencies {
    ...
    androidTestImplementation 'androidx.test.espresso:espresso-remote:3.6.1'
}

Kotlin

dependencies {
    ...
    androidTestImplementation('androidx.test.espresso:espresso-remote:3.6.1')
}

앱의 androidTest 매니페스트에 다음도 추가해야 합니다.

  • 프로세스를 정의하는 <instrumentation> 요소
  • Multiprocess Espresso를 사용하려 한다고 나타내는 <meta-data> 요소

다음 코드 스니펫은 이러한 요소를 추가하는 방법을 보여줍니다.

src/androidTest/AndroidManifest.xml

<manifest ... package="androidx.test.mytestapp.tests">
  <uses-sdk android:targetSdkVersion="27" android:minSdkVersion="14" />
  <instrumentation
    android:name="androidx.test.runner.AndroidJUnitRunner"
    android:targetPackage="androidx.test.mytestapp"
    android:targetProcesses="*">
    <meta-data
      android:name="remoteMethod"
      android:value="androidx.test.espresso.remote.EspressoRemote#remoteInit" />
  </instrumentation>
</manifest>

이전 스니펫은 테스트할 Android 프레임워크에 나타냅니다. 모든 프로세스에 적용됩니다 일부 캠페인만 테스트하려는 경우 앱의 프로세스에서 쉼표로 구분된 목록을 지정할 수 있습니다. 대신 targetProcesses 요소를 사용할 수 있습니다.

<instrumentation
    ...
    android:targetProcesses=
            "androidx.test.mytestapp:myFirstAppProcessToTest,
             androidx.test.mytestapp:mySecondAppProcessToTest" ... />

도구 아키텍처 이해

앱을 테스트하고 기본 프로세스를 실행할 때 보조 Android UI에서 활동을 시작하는 프로세스입니다 그런 다음 시스템은 다음 단계를 완료하여 교차 프로세스를 사용 설정합니다. Espresso를 사용하여 테스트하기:

  1. Android 프레임워크는 앱의 탐색 구조와 관련이 있습니다. 각 Instrumentation 프로세스 새로운 인스턴스가 포함됩니다. AndroidJUnitRunner 이 단계에서 두 가지 계측 프로세스가 각각과 통신할 수 없음 있습니다.
  2. AndroidJUnitRunner 드림 인스턴스는 Espresso를 테스트 프레임워크로 등록합니다.
  3. 이 두 가지 인스턴스는 AndroidJUnitRunner 드림 서로 간의 연결을 설정하기 위해 핸드셰이크를 수행합니다. 동시에 각 AndroidJUnitRunner 드림 인스턴스는 Espresso와 같은 등록된 모든 클라이언트를 각각 연결 이러한 클라이언트들은 다른 프로세스의 통신할 수 있게 해줍니다
  4. AndroidJUnitRunner 인스턴스는 계속해서 새로 추가된 계측 인스턴스와 테스트를 찾습니다. 필요에 따라 추가 통신 채널을 설정합니다.

그림 1에서는 이 프로세스의 결과를 보여줍니다.

그림 1. 여러 조직 간의 Multiprocess Espresso를 사용한 계측 프로세스
를 통해 개인정보처리방침을 정의할 수 있습니다.

추가 리소스

이 주제에 관해 자세히 알아보려면 다음 자료를 참조하세요.