Uygulamanız büyüdükçe uygulama bileşenlerinizden bazılarını yerleştirmekten uygulamanızın ana işlemi dışında bir işlem üzerinde çalışıyor. Bu tablodaki uygulama bileşenlerini varsayılan olmayan işlemler yapmaksa çok işlemli Espresso'nun işlevlerini kullanabilirsiniz. Android 8.0 (API düzeyi 26) ve sonraki sürümlerde kullanılabilen bu araç, uygulamanızın sürecini aşan kullanıcı arayüzü etkileşimlerini sorunsuz bir şekilde test edin sınırlar ve Espresso'nun senkronizasyon garantisi verir.
Multiprocess Espresso'yu kullanırken aşağıdaki sürüm oluşturmayı ve kapsamı koruyun şu noktalara dikkat edin:
- Uygulamanız, Android 8.0 (API düzeyi 26) veya sonraki sürümleri hedeflemelidir.
- Araç, yalnızca yükleyin. Harici süreçleri test edemez.
Aracı kullanma
Çoklu işlem Espresso kullanarak uygulamanızda bir süreci test etmek için bir referans ekleyin
uygulamanızın build.gradle
dosyasındaki espresso-remote yapısına eklemeniz gerekir:
app/build.gradle
Eski
dependencies { ... androidTestImplementation 'androidx.test.espresso:espresso-remote:3.6.1' }
Kotlin
dependencies { ... androidTestImplementation('androidx.test.espresso:espresso-remote:3.6.1') }
Uygulamanızın androidTest
manifestine aşağıdakileri de eklemeniz gerekir:
- İşlemi tanımlayan bir
<instrumentation>
öğesi. - Çoklu İşlem Espresso'yu kullanmak istediğinizi belirten bir
<meta-data>
öğesi.
Aşağıdaki kod snippet'inde bu öğelerin nasıl ekleneceği gösterilmektedir:
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>
Önceki snippet, Android çerçevesinin test etmesini istediğinizi belirtir
her işlemin tamamlanmasına yardımcı olur. Anahtar kelimelerinizin yalnızca bir alt kümesini test etmek
uygulamanızın işlemleri için
Bunun yerine targetProcesses
öğesi:
<instrumentation
...
android:targetProcesses=
"androidx.test.mytestapp:myFirstAppProcessToTest,
androidx.test.mytestapp:mySecondAppProcessToTest" ... />
Aracın mimarisini anlama
Uygulamanızı test edip varsayılan işlemini başlattığınızda, bir etkinlik başlatan diğer bir etkileşim de (ör. düğmeye basma) bahsedeceğim. Daha sonra sistem, çapraz işlem özelliğinin etkinleştirilmesi için aşağıdaki adımları aşağıdaki adımları izleyin:
- Android Framework, uygulamanızın gereksinimlerini karşılamak için yeni bir süreç
gezinme yapısına sahiptir. Her bir
Instrumentation
işlemi şunun yeni bir örneğini içerir:AndroidJUnitRunner
Bu aşamada 2 araç süreci her biriyle diğer. - Her biri
AndroidJUnitRunner
örneği, Espresso'yu test çerçevesi olarak kaydeder. - 2 örnek
AndroidJUnitRunner
el sıkışma yaparak birbirleriyle bağlantı kurmalarını sağlarlar. Aynı anda her saatAndroidJUnitRunner
örneği, Espresso gibi tüm kayıtlı müşterileri kendi bir şekilde iletişim kurabilmesi için, diğer süreçlerde de bir iletişim kanalı bulunur. - Her bir
AndroidJUnitRunner
örnek, yeni eklenen araç örneklerini aramaya devam eder ve ve gerektiğinde ek iletişim kanalları kurmaktır.
Şekil 1'de bu işlemin sonucu gösterilmiştir:
![](https://developer.android.com/static/images/training/testing/multiprocess_espresso.png?authuser=9&hl=tr)
Ek kaynaklar
Aşağıdaki kaynaklara göz atarak bu konuyla ilgili daha fazla bilgi edinebilirsiniz.
- Android Test Desteği ile Android'de Test Amaçlı Geliştirme Kitaplık Google I/O 2017'den 36:41'de başlayan oturum videosu.