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:
Test geçiş komutlarının test cihazına erişmesine izin vermek için
androidTest
kaynak grubundaki manifest dosyasınaINTERNET
veACCESS_NETWORK_STATE
izinlerini 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üzeyinde derleme komut dosyasında
emulatorControl
seçeneğini etkinleştirin:Kotlin
testOptions { emulatorControl { enable = true } }
Eski
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: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:
Ö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ü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:
Ö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() ... }
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() {
...
}