Öngörülen test kurallarıyla sanal cihaz yönetimini otomatikleştirme

Uygun XR cihazlar
Bu kılavuz, bu tür XR cihazlar için deneyimler oluşturmanıza yardımcı olur.
Ses ve
Ekran Gözlükleri

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 ortamının kurulumunu ve yönetimini otomatik hale getirmek üzere Projected Test Rule API'lerini kullanın. 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şturun.

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 isDeviceConnected gibi özellikleri varsayılan değerlerine sıfırlar. Bu özellikleri @After yö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 capabilities gibi özellikleri varsayılan değerlerine sıfırlar. Bu özellikleri @After yö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 launchTestProjectedDeviceActivity kullanın.