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şikliklerine uğradığında uygulamanızı test etmek için Espresso Device API'yi kullanın. Espresso Device API, bu yapılandırma değişikliklerini sanal cihazda simüle etmenize ve testlerinizi eşzamanlı olarak yürütmenize olanak tanır. Böylece aynı anda 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 belgelerine göz atın.

Espresso Device API'yi kullanmak için gerekenler:

  • Android Studio Iguana veya sonraki sürümler
  • 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 sonraki sürümleri çalıştıran Android sanal cihaz

Espresso Device API için projenizi ayarlama

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

  1. Test geçiş komutlarının test cihazına erişmesine izin vermek için androidTest kaynak grubundaki manifest dosyasına INTERNET ve ACCESS_NETWORK_STATE izinlerini 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üzeyinde derleme komut dosyasında emulatorControl seçeneğini etkinleştirin:

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      

    Eski

      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:1.0.0-beta01")
      }
      

    Eski

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

Sık karşılaşılan yapılandırma değişiklikleriyle karşılaştırarak test etme

Espresso Device API'de birden fazla ekran yönü ve katlanabilir durum özelliği bulunur. Bunları cihaz yapılandırma değişikliklerini simüle edebilirsiniz.

Ekran döndürme durumuna göre test et

Cihaz ekranı döndürüldüğünde uygulamanıza ne olacağını test etmek için aşağıdaki örneği inceleyebilirsiniz:

  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ürüldükten sonra, kullanıcı arayüzünün yeni düzene beklendiği gibi uyarlandığı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 açılmaya karşı test et

Uygulamanız katlanabilir cihaz üzerindeyse ve ekranı açıldığında ne olacağını test etmek için aşağıdaki örneği inceleyebilirsiniz:

  1. Öncelikle, onDevice().setClosedMode() numaralı telefonu arayarak cihazı katlanmış durumda test edin. Uygulama düzeninizin 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ış duruma geçmek için onDevice().setFlatMode() numaralı telefonu arayın. Uygulama düzeninin genişletilmiş boyut sınıfına uyum sağlayıp sağlamadığını kontrol edin.

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

Testleriniz için hangi cihazlara ihtiyaç duyduğunuzu belirtin

Katlanabilir olmayan bir cihazda katlama işlemleri gerçekleştiren bir test yapıyorsanız test muhtemelen başarısız olacaktır. Yalnızca çalışan cihazla ilgili 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 çalışan testleri otomatik olarak atlar. Cihaz gereksinimi kuralını her bir 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 aşağıdaki @RequiresDeviceMode kodunu testinize ekleyin:

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