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:
Testin komutları test cihazına geçirmesini sağlamak için
INTERNET
veACCESS_NETWORK_STATE
izinleriniandroidTest
kaynak grubundaki manifest dosyasına ekleyin:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
gradle.properties
dosyasındaenableEmulatorControl
deneysel işaretini etkinleştirin:android.experimental.androidTest.enableEmulatorControl=true
Modül düzeyindeki derleme komut dosyasında
emulatorControl
seçeneğini etkinleştirin:Kotlin
testOptions { emulatorControl { enable = true } }
Modern
testOptions { emulatorControl { enable = true } }
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:
Ö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)
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) ... }
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:
Ö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() ... }
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() {
...
}