Verwaltung virtueller Geräte mit projizierten Testregeln automatisieren

XR‑Geräte, für die der Leitfaden gilt
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für die folgenden Arten von XR-Geräten zu entwickeln.
Audio- und
Displaybrillen

Es ist schwierig, Tests zu automatisieren, wenn der Code von physischer Hardware abhängt. Beispielsweise müssen Sie das physische Gerät möglicherweise manuell verbinden und trennen, um die Verbindungsstatus zu überprüfen. Angesichts der vielen verschiedenen Typen, Funktionen und Gerätezustände von Audio- und Displaybrillen kann diese Herausforderung noch komplexer werden. Um diese vielfältigen Fälle zu testen, verwenden Sie die Projected Test Rule APIs, um die Einrichtung und Verwaltung einer projizierten Testumgebung zu automatisieren. Die Bibliothek übernimmt die Erstellung projizierter Geräte, Verbindungsstatus und die Überprüfung der Funktionen, sodass Sie sich auf das Testen der Kernlogik Ihrer App konzentrieren können. Mit diesen APIs können Sie robuste Testsuiten erstellen, ohne Boilerplate-Code schreiben zu müssen.

Bibliotheksabhängigkeiten hinzufügen

Wenn Sie die Testregel verwenden möchten, fügen Sie das Testartefakt der Datei build.gradle Ihrer App hinzu:

Groovy

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")
}

Testregel einrichten

Um die grundlegende Testregel einzurichten, fügen Sie der Regel in Ihrer Testklasse eine Annotation hinzu. Standardmäßig verbindet die Regel vor jedem Test ein projiziertes Gerät und aktiviert seine visuellen Funktionen.

@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()
}

Andere häufige Szenarien testen

Nachdem Sie Ihre projizierte Testumgebung mit einer grundlegenden Testregel eingerichtet haben, testen Sie andere häufige Szenarien für Audio- und Displaybrillen, um die Funktionalität Ihrer App zu überprüfen.

Verbindungstrennung des Testgeräts testen

Verwenden Sie die Eigenschaft isDeviceConnected, um zu testen, wie Ihre App reagiert, wenn die Verbindung zur Brille unterbrochen wird:

@Test
fun testDeviceDisconnection() {
    // manually disconnect the device via the rule
    projectedTestRule.isDeviceConnected = false

    assertThrows(IllegalStateException::class.java) {
        ProjectedContext.createProjectedDeviceContext(context)
    }
}

Wichtige Punkte zum Code

  • Die Regel setzt Eigenschaften wie isDeviceConnected vor jedem Test auf die Standardwerte zurück. Sie müssen diese Eigenschaften nicht manuell in @After-Methoden zurücksetzen.

Verschiedene Gerätefunktionen testen

Auf Displaybrillen können UIs angezeigt werden, die mit Jetpack Compose Glimmer erstellt wurden. Standardmäßig aktiviert ProjectedTestRule die Funktion CAPABILITY_VISUAL_UI. Mit dem Set capabilities können Sie genau definieren, was das projizierte Gerät unterstützt. Das ist nützlich, um zu überprüfen, ob Ihre App korrekt nach Hardwaresupport sucht, bevor sie versucht, Inhalte auf die Brille zu projizieren.

@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)
    }
}

Wichtige Punkte zum Code

  • Die Regel setzt Eigenschaften wie capabilities vor jedem Test auf die Standardwerte zurück. Sie müssen diese Eigenschaften nicht manuell in @After-Methoden zurücksetzen.
  • Wenn Sie das Verhalten speziell für eine Aktivität überprüfen müssen, die auf eine Displaybrille projiziert wird, verwenden Sie launchTestProjectedDeviceActivity.