앱이 성장함에 따라 앱 구성 요소 중 일부를 배치하는 것이 유용할 수 있습니다. 다른 프로세스에서 발생합니다. 이러한 영역에서 앱 구성요소를 테스트하려면 기본이 아닌 프로세스를 실행하면 Multiprocess Espresso의 기능을 사용할 수 있습니다. Android 8.0 (API 수준 26) 이상에서 사용할 수 있는 이 도구를 사용하면 다음 작업을 할 수 있습니다. 앱의 프로세스를 가로지르는 앱의 UI 상호작용을 원활하게 테스트 Espresso의 동기화 보장을 유지하면서 경계를 구현합니다.
Multiprocess Espresso를 사용할 때는 다음 버전 관리와 범위를 유지하세요. 염두에 두어야 할 사항:
- 앱이 Android 8.0(API 레벨 26) 이상을 타겟팅해야 합니다.
- 이 도구는 개발자가 앱의 패키지에서 찾을 수 있습니다. 외부 프로세스는 테스트할 수 없습니다.
도구 사용
Multiprocess Espresso를 사용하여 앱 내의 프로세스를 테스트하려면 참조를 추가하세요.
앱의 build.gradle
파일에 espresso-remote 아티팩트에 추가합니다.
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>
요소
다음 코드 스니펫은 이러한 요소를 추가하는 방법을 보여줍니다.
<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를 사용하여 테스트하기:
- Android 프레임워크는 앱의
탐색 구조와 관련이 있습니다. 각
Instrumentation
프로세스 새로운 인스턴스가 포함됩니다.AndroidJUnitRunner
이 단계에서 두 가지 계측 프로세스가 각각과 통신할 수 없음 있습니다. - 각
AndroidJUnitRunner
드림 인스턴스는 Espresso를 테스트 프레임워크로 등록합니다. - 이 두 가지 인스턴스는
AndroidJUnitRunner
드림 서로 간의 연결을 설정하기 위해 핸드셰이크를 수행합니다. 동시에 각AndroidJUnitRunner
드림 인스턴스는 Espresso와 같은 등록된 모든 클라이언트를 각각 연결 이러한 클라이언트들은 다른 프로세스의 통신할 수 있게 해줍니다 - 각
AndroidJUnitRunner
인스턴스는 계속해서 새로 추가된 계측 인스턴스와 테스트를 찾습니다. 필요에 따라 추가 통신 채널을 설정합니다.
그림 1에서는 이 프로세스의 결과를 보여줍니다.
를 통해 개인정보처리방침을 정의할 수 있습니다.추가 리소스
이 주제에 관해 자세히 알아보려면 다음 자료를 참조하세요.
- Android 테스트 지원을 통한 Android 테스트 기반 개발 보관함 Google I/O 2017의 세션 동영상을 36분 41초부터 시작하겠습니다.