Espresso Device API'yi kullanarak ekran yapılandırma değişikliklerine göre test etme

Cihaz döndürme ve ekranı açma gibi yaygın yapılandırma değişikliklerinden geçtiğinde uygulamanızı test etmek için Espresso Device API'yi kullanın. Espresso Device API, bu yapılandırma değişikliklerini sanal bir cihazda simüle etmenize olanak tanır ve testlerinizi eşzamanlı olarak yürütür. Böylece, tek seferde yalnızca bir kullanıcı arayüzü işlemi veya onayı gerçekleşir ve test sonuçlarınız daha güvenilir olur. Espresso ile kullanıcı arayüzü testleri yazma konusunda yeniyseniz belgeleri inceleyin.

Espresso Device API'yi kullanmak için şunlar gerekir:

  • Android Studio Iguana veya üstü
  • Android Gradle eklentisi 8.3 veya sonraki sürümler
  • Android Emulator 33.1.10 veya sonraki sürümler
  • API düzeyi 24 veya üstünü çalıştıran Android sanal cihazı

Projenizin Espresso Device API'si için kurulumunu yapma

Projenizi Espresso Device API'yi destekleyecek şekilde ayarlamak için aşağıdakileri yapın:

  1. Testin komutları test cihazına geçirmesini sağlamak için INTERNET ve ACCESS_NETWORK_STATE izinlerini androidTest kaynak grubundaki manifest dosyasına ekleyin:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
      
  2. gradle.properties dosyasında enableEmulatorControl deneysel işaretini etkinleştirin:

      android.experimental.androidTest.enableEmulatorControl=true
      
  3. Modül düzeyindeki derleme komut dosyasında emulatorControl seçeneğini etkinleştirin:

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      

    Modern

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      
  4. Modül düzeyindeki derleme komut dosyasında, Espresso Cihazı kitaplığını projenize aktarın:

    Kotlin

      dependencies {
        androidTestImplementation("androidx.test.espresso:espresso-device:3.5.1")
      }
      

    Modern

      dependencies {
        androidTestImplementation 'androidx.test.espresso:espresso-device:3.5.1'
      }
      

Sık kullanılan yapılandırma değişikliklerine göre test etme

Espresso Device API, cihaz yapılandırması değişikliklerini simüle etmek için birden fazla ekran yönü ve katlanabilir durum sunar.

Ekran döndürmeye göre test et

Cihaz ekranı döndüğünde uygulamanıza ne olduğunu test etmenin bir örneğini aşağıda bulabilirsiniz:

  1. Öncelikle, tutarlı bir başlangıç durumu için cihazı dikey moda ayarlayın:

      import androidx.test.espresso.device.action.ScreenOrientation
      import androidx.test.espresso.device.rules.ScreenOrientationRule
      ...
      @get:Rule
      val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
      
  2. Test yürütme sırasında cihazı yatay yöne ayarlayan bir test oluşturun:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        ...
      }
      
  3. Ekran döndükten sonra kullanıcı arayüzünün beklendiği gibi yeni düzene uyum sağladığından emin olun.

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist()
      }
      

Ekranı katlamaya karşı test et

Uygulamanız katlanabilir bir cihazdaysa ve ekranı açılmışsa uygulamanıza ne olduğunu nasıl test edeceğinize dair bir örneği aşağıda bulabilirsiniz:

  1. Öncelikle onDevice().setClosedMode() çağrısı yaparak cihazı katlanmış halde test edin. Uygulama düzeninin küçük ekran genişliğine uyum sağladığından emin olun.

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
      
  2. Tamamen açılmış bir duruma geçmek için onDevice().setFlatMode() numaralı telefonu arayın. Uygulamanın düzeninin genişletilmiş boyut sınıfına uyum sağladığından emin olun.

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        ...
        onDevice().setFlatMode()
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist()
      }
      

Testlerinizin ihtiyaç duyduğu cihazları belirtin

Katlanabilir olmayan bir cihazda katlama işlemleri gerçekleştiren bir test çalıştırıyorsanız test büyük olasılıkla başarısız olur. Yalnızca çalışan cihazla alakalı testleri yürütmek için @RequiresDeviceMode ek açıklamasını kullanın. Test çalıştırıcı, test edilen yapılandırmayı desteklemeyen cihazlarda test çalıştırma işlemini otomatik olarak atlar. Cihaz gereksinimi kuralını her teste veya bir test sınıfının tamamına ekleyebilirsiniz.

Örneğin, bir testin yalnızca düz yapılandırmaya açmayı destekleyen cihazlarda çalıştırılması gerektiğini belirtmek için testinize aşağıdaki @RequiresDeviceMode kodunu ekleyin:

@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
  ...
}