Seiring perkembangan aplikasi, mungkin akan berguna jika Anda menempatkan beberapa komponen aplikasi dalam proses selain proses utama aplikasi Anda. Untuk menguji komponen aplikasi dalam proses non-default, Anda dapat menggunakan fungsi Multiprocess Espresso. Alat ini, yang tersedia di Android 8.0 (level API 26) dan yang lebih tinggi, memungkinkan Anda untuk dengan lancar menguji interaksi UI aplikasi Anda yang melintasi proses aplikasi batas sambil mempertahankan jaminan sinkronisasi Espresso.
Saat menggunakan Multiprocess Espresso, pertahankan pembuatan versi dan cakupan berikut pertimbangan:
- Aplikasi Anda harus menargetkan Android 8.0 (API level 26) atau yang lebih tinggi.
- Alat ini hanya dapat menguji komponen aplikasi yang Anda sertakan dalam proses di dalamnya paket aplikasi Anda. Fitur tersebut tidak dapat menguji proses eksternal.
Menggunakan fitur
Untuk menguji proses dalam aplikasi Anda menggunakan Multiprocess Espresso, tambahkan referensi
ke artefak espresso-remote di file build.gradle
aplikasi Anda:
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') }
Anda juga perlu menambahkan elemen berikut ke manifes androidTest
aplikasi:
- Elemen
<instrumentation>
yang menentukan proses. - Elemen
<meta-data>
yang menunjukkan bahwa Anda ingin menggunakan Multiprocess Espresso.
Cuplikan kode berikut menunjukkan cara menambahkan elemen ini:
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>
Cuplikan sebelumnya menunjukkan framework Android yang ingin Anda uji.
setiap proses dalam paket aplikasi Anda. Jika Anda hanya ingin menguji subset dari
proses aplikasi, Anda dapat menentukan daftar yang dipisahkan koma dalam
Sebagai gantinya, elemen targetProcesses
:
<instrumentation
...
android:targetProcesses=
"androidx.test.mytestapp:myFirstAppProcessToTest,
androidx.test.mytestapp:mySecondAppProcessToTest" ... />
Memahami arsitektur fitur
Saat menguji aplikasi dan meluncurkan proses defaultnya, Anda mungkin menjalankan UI interaksi Anda, seperti penekanan tombol, yang memulai aktivitas di interaksi sekunder, {i>checkout<i}. Sistem kemudian menyelesaikan langkah-langkah berikut untuk mengaktifkan lintas proses pengujian menggunakan Espresso:
- Framework Android membuat dan memulai proses baru untuk mengikuti metode
struktur navigasi. Setiap proses
Instrumentation
menyertakan instance baru dariAndroidJUnitRunner
. Pada tahap ini, 2 proses instrumentasi tidak dapat berkomunikasi dengan masing-masing proses lainnya. - Masing-masing
AndroidJUnitRunner
mendaftarkan Espresso sebagai framework pengujiannya. - 2 kasus
AndroidJUnitRunner
melakukan jabat tangan untuk menyambung koneksi antara satu sama lain. Secara bersamaan masing-masingAndroidJUnitRunner
menghubungkan semua klien terdaftar seperti Espresso dengan rekan dalam proses lain sehingga klien tersebut dapat membentuk saluran komunikasi di antara mereka sendiri. - Setiap
AndroidJUnitRunner
instance akan terus mencari instance instrumentasi dan pengujian yang baru ditambahkan kerangka kerja klien, membangun saluran komunikasi tambahan sesuai kebutuhan.
Gambar 1 menggambarkan hasil dari proses ini:
![](https://developer.android.google.cn/static/images/training/testing/multiprocess_espresso.png?authuser=0&hl=id)
Referensi lainnya
Untuk informasi selengkapnya tentang topik ini, lihat referensi berikut.
- Pengembangan Berbasis Pengujian di Android dengan Dukungan Pengujian Android Koleksi video sesi dari Google I/O 2017, dimulai pada 36:41.