projectedtestrule, virtual device management
Kod fiziksel donanıma bağlı olduğunda testleri otomatikleştirmek zordur. Örneğin, bağlantı durumlarını doğrulamak için fiziksel cihazı manuel olarak bağlayıp çıkarmanız gerekebilir. Ses gözlükleri ve ekran gözlüklerinin farklı türleri, özellikleri ve cihaz durumları göz önüne alındığında bu zorluk daha da karmaşık hale gelebilir. Bu çeşitli durumları test etmek için Öngörülen Test Kuralı API'lerini kullanarak öngörülen test ortamının kurulumunu ve yönetimini otomatikleştirin. Kitaplık, yansıtılan cihaz oluşturma, bağlantı durumları ve özellik doğrulama işlemlerini yönetir. Böylece uygulamanızın temel mantığını test etmeye odaklanabilirsiniz. Bu API'leri kullanarak, standart kod yazmadan sağlam test paketleri oluşturabilirsiniz.
Kitaplık bağımlılıkları ekleme
Test kuralını kullanmak için test yapısını uygulamanızın build.gradle dosyasına ekleyin:
Modern
dependencies {
// JXR Projected testing library
testImplementation "androidx.xr.projected:projected-testing:1.0.0-alpha07"
}
Kotlin
dependencies {
// JXR Projected testing library
testImplementation("androidx.xr.projected:projected-testing:1.0.0-alpha07")
}
Test kuralını ayarlama
Temel test kuralını ayarlamak için test sınıfınızdaki kurala açıklama ekleyin. Kural, varsayılan olarak her test çalıştırılmadan önce yansıtılan bir cihazı bağlar ve görsel özelliklerini etkinleştirir.
@get:Rule val projectedTestRule = ProjectedTestRule() private val context: Context get() = ApplicationProvider.getApplicationContext() @Test fun testWithConnectedDevice() { val projectedContext = ProjectedContext.createProjectedDeviceContext(context) assertThat(ProjectedContext.isProjectedDeviceContext(projectedContext)).isTrue() }
Diğer yaygın senaryoları test etme
Temel bir test kuralıyla öngörülen test ortamınızı ayarladığınıza göre, uygulamanızın işlevselliğini doğrulamak için ses gözlükleri ve ekran gözlükleriyle ilgili diğer yaygın senaryoları test edin.
Test cihazının bağlantısının kesilmesi
Uygulamanızın gözlükle bağlantısı kesildiğinde nasıl tepki verdiğini test etmek için isDeviceConnected özelliğini kullanın:
@Test fun testDeviceDisconnection() { // manually disconnect the device via the rule projectedTestRule.isDeviceConnected = false assertThrows(IllegalStateException::class.java) { ProjectedContext.createProjectedDeviceContext(context) } }
Kodla ilgili önemli noktalar
- Kural, her testten önce
isDeviceConnectedgibi özellikleri varsayılan değerlerine sıfırlar. Bu özellikleri@Afteryöntemlerinde manuel olarak sıfırlamanız gerekmez.
Farklı cihaz özelliklerini test etme
Ekranlı gözlükler, Jetpack Compose Glimmer ile oluşturulan kullanıcı arayüzlerini gösterebilir. Varsayılan olarak, ProjectedTestRule CAPABILITY_VISUAL_UI'ü etkinleştirir. Yansıtılan cihazın tam olarak neyi desteklediğini tanımlamak için capabilities kümesini kullanın. Bu, uygulamanızın içeriği gözlüğe yansıtmayı denemeden önce donanım desteğini doğru şekilde kontrol ettiğini doğrulamak için kullanışlıdır.
@Test fun testAppBehaviorWithoutDisplayCapabilities() = projectedTestRule.launchTestProjectedDeviceActivity { activity -> // disable display capability projectedTestRule.capabilities = setOf() runBlocking { // create the controller val controller = ProjectedDeviceController.create(activity) // verify the app recognizes the lack of visual UI support assertThat(controller.capabilities).doesNotContain(ProjectedDeviceController.Capability.CAPABILITY_VISUAL_UI) } }
Kodla ilgili önemli noktalar
- Kural, her testten önce
capabilitiesgibi özellikleri varsayılan değerlerine sıfırlar. Bu özellikleri@Afteryöntemlerinde manuel olarak sıfırlamanız gerekmez. - Özellikle gözlük görüntülemesi yapması beklenen bir etkinlik için davranışı doğrulamanız gerektiğinde
launchTestProjectedDeviceActivitykullanın.