Cihazda döndürme ve ekranı açma gibi yaygın yapılandırma değişiklikleri olduğunda 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 senkron olarak yürütür. Bu nedenle, her seferinde yalnızca bir kullanıcı arayüzü işlemi veya onaylama gerçekleşir ve test sonuçlarınız daha güvenilir olur. Espresso ile kullanıcı arayüzü testleri 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 sonraki sürümler
- Android Emulator 33.1.10 veya sonraki sürümler
- API düzeyi 24 veya daha yeni bir sürümü ç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:
Testin, test cihazına komut göndermesine izin vermek için
INTERNET
veACCESS_NETWORK_STATE
izinleriniandroidTest
kaynak kümesindeki manifest dosyasına ekleyin:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
enableEmulatorControl
deneysel işaretinigradle.properties
dosyasında 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 } }
Groovy
testOptions { emulatorControl { enable = true } }
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' }
Sık yapılan yapılandırma değişikliklerine karşı test etme
Espresso Device API'de, cihaz yapılandırma değişikliklerini simüle etmek için kullanabileceğiniz birden fazla ekran yönü ve katlanabilir durum bulunur.
Ekran döndürmeye karşı test etme
Cihaz ekranı döndürüldüğünde uygulamanızda ne olduğunu test etme ile ilgili bir örneği 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 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 açılma durumuna göre test etme
Katlanabilir bir cihazda bulunan uygulamanızın ekranı açıldığında ne olacağını test etme örneğini aşağıda bulabilirsiniz:
Öncelikle
onDevice().setClosedMode()
numarasını arayarak cihazı katlı durumdayken test edin. Uygulamanızın düzeninin, kompakt 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()
işlevini çağırın. Uygulamanın düzeninin genişletilmiş boyut sınıfına uyum sağladığını kontrol edin.@Test fun myUnfoldedTest() { onDevice().setClosedMode() ... onDevice().setFlatMode() composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed() composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist() }
Testlerinizin hangi cihazlara ihtiyacı olduğunu belirtin
Katlanabilir olmayan bir cihazda katlama işlemleri gerçekleştiren bir test çalıştırıyorsanız testin başarısız olması muhtemeldir. 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ırmayı otomatik olarak atlar. Cihaz koşulu kuralını her teste veya test sınıfının tamamına ekleyebilirsiniz.
Örneğin, bir testin yalnızca düz 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() {
...
}