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

Cihaz yaygın olarak karşılaştığında uygulamanızı test etmek için Espresso Device API'yi kullanın döndürme ve ekran açma gibi yapılandırma değişiklikleridir. Espresso Device API, bu yapılandırma değişikliklerini sanal bir cihazda simüle etmenizi sağlar. Testlerinizi eşzamanlı olarak yürüttüğünden ve test sonuçlarınızın daha güvenilir olmasını sağlar. Kullanıcı arayüzü yazmaya yeni başladıysanız test etmek için belgelerine bakı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çme komutlarının test cihazına erişmesine izin vermek için androidTest kaynak kümesindeki manifest dosyası için INTERNET ve ACCESS_NETWORK_STATE izinleri:

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

      android.experimental.androidTest.enableEmulatorControl=true
      
  3. Modül düzeyinde derlemede emulatorControl seçeneğini etkinleştir komut dosyası:

    Kotlin

      testOptions {
        emulatorControl {
          enable = true
        }
      }
      

    Eski

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

    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 cihaz simüle etmek için kullanabilirsiniz.

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

Cihaz ekranı açıldığında uygulamanıza ne olduğunu nasıl test edeceğinize dair bir örneği aşağıda bulabilirsiniz: döner:

  1. İlk olarak, tutarlı bir başlangıç durumu için cihazı dikey konuma ayarlayın. mod:

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

      @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 cihazlarda olduğunda ne olacağını test etmek için aşağıdaki örneği inceleyebilirsiniz. cihaz ve ekran açıldığında:

  1. İlk olarak, şu numarayı arayarak cihazı katlanmış durumda test edin: onDevice().setClosedMode() Uygulama düzeninizin küçük ekran genişliğine uyum sağlar.

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
      
  2. Tamamen açılmış duruma geçmek için şu numarayı arayın: onDevice().setFlatMode() Uygulama düzeninin şuna uyarlandığından emin olun: genişletilmiş boyut sınıfını kullanabilirsiniz.

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

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

Katlama özellikli olmayan bir cihazda katlama işlemi gerçekleştiren bir test gerçekleştiriyorsanız büyük olasılıkla test başarısız olacaktır. Yalnızca alakalı testleri yürütmek @RequiresDeviceMode ek açıklamasını kullanın. Test koşucusu özelliğini desteklemeyen cihazlarda çalıştırılan testleri otomatik olarak atlar yapılandırmanın test edildiğini unutmayın. Cihaz gereksinimi kuralını her teste ekleyebilirsiniz veya test sınıfının tamamı.

Örneğin, bir testin yalnızca aşağıdaki @RequiresDeviceMode kodunu ekleyin: ekleyin:

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