Çok İşlemli Espresso

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 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:

  1. Android Framework, uygulamanızın gereksinimlerini karşılamak için yeni bir süreç gezinme yapısına sahip. Her bir Instrumentation işlemi yeni bir örneğini içerir AndroidJUnitRunner Bu aşamada 2 araç süreci her biriyle diğer.
  2. Her biri AndroidJUnitRunner örneği, Espresso'yu test çerçevesi olarak kaydeder.
  3. 2 örnek AndroidJUnitRunner el sıkışma yaparak birbirleriyle bağlantı kurmalarını sağlarlar. Aynı anda her saat AndroidJUnitRunner ö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.
  4. 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:

Şekil 1. Birden çok ekip üyesi arasında enstrümantasyon süreçleri için çok işlemli Espresso kullanma
'nı inceleyin.

Ek kaynaklar

Aşağıdaki kaynaklara göz atarak bu konuyla ilgili daha fazla bilgi edinebilirsiniz.