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şiklikleri geçirirken 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, aynı anda yalnızca bir kullanıcı arayüzü işlemi veya beyanı gerçekleşir ve test sonuçlarınızın güvenilirliği artar. Espresso ile kullanıcı arayüzü testi yazmaya yeni başladıysanız dokümanlarına göz atın.

Espresso Device API'yi kullanmak için aşağıdakilere ihtiyacınız vardır:

  • Android Studio Iguana veya sonraki sürümler
  • Android Gradle eklentisi 8.3 veya daha yeni sürümler
  • Android Emulator 33.1.10 veya sonraki sürümler
  • API seviyesi 24 veya daha yeni sürümleri çalıştıran Android sanal cihaz

Projenizi Espresso Device API için ayarlama

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

  1. Testin test cihazına komut iletmesine izin vermek için androidTest kaynak kümesindeki manifest dosyasına INTERNET ve ACCESS_NETWORK_STATE izinlerini ekleyin:

      <uses-permission android:name="android.permission.INTERNET" />
      <uses-permission android:name="android.permission.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
        }
      }
      

    Groovy

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

    Kotlin

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

    Groovy

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

Ortak yapılandırma değişikliklerine karşı test etme

Espresso Device API, cihaz yapılandırma değişikliklerini simüle etmek için kullanabileceğiniz birden fazla ekran yönü ve katlanabilir duruma sahiptir.

Ekran döndürmeye karşı test etme

Cihaz ekranı döndürüldüğünde uygulamanıza ne olacağını test etmeyi gösteren bir örnek aşağıda verilmiştir:

  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ütülürken cihazı yatay yönde 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 uyum sağladığını kontrol edin.

      @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ın açılmasına karşı test etme

Uygulamanız katlanabilir bir cihazdaysa ve ekran açılıyorsa ne olacağını test etmeyi gösteren bir örnek aşağıda verilmiştir:

  1. Öncelikle onDevice().setClosedMode() numaralı telefonu arayarak cihaz katlanmış haldeyken testi yapın. Uygulamanızın düzeninin, kompakt ekran genişliğine uyarlandığı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() işlevini çağırın. Uygulamanın düzeninin genişletilmiş boyut sınıfına uyarlandığından emin olun.

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

Testlerinizin hangi cihazlara ihtiyacı olduğunu belirtme

Katlanabilir olmayan bir cihazda katlama işlemleri gerçekleştiren bir test çalıştırırsanı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 notunu kullanın. Test çalıştırıcı, test edilen yapılandırmayı desteklemeyen cihazlarda test çalıştırmayı otomatik olarak atlar. Cihaz şartı kuralını her teste veya bir test sınıfının tamamına ekleyebilirsiniz.

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

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