Verwaltung virtueller Geräte mit projizierten Testregeln automatisieren

projectedtestrule, Verwaltung virtueller Geräte

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- &
Displaybrillen

Es ist schwierig, Tests zu automatisieren, wenn der Code von physischer Hardware abhängt. Möglicherweise müssen Sie das physische Gerät manuell verbinden und trennen, um den Verbindungsstatus zu prüfen. Angesichts der verschiedenen Typen, Funktionen und Gerätestatus von Audio- und Displaybrillen kann diese Herausforderung noch komplexer werden. Um diese verschiedenen Fälle zu testen, können Sie die APIs für Projected Test Rule verwenden, um die Einrichtung und Verwaltung einer projizierten Testumgebung zu automatisieren. Die Bibliothek übernimmt die Erstellung projizierter Geräte, Verbindungsstatus und die Überprüfung von 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 build.gradle-Datei 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, annotieren Sie die Regel in Ihrer Testklasse. Standardmäßig wird durch die Regel eine Verbindung zu einem Gerät mit Projektionsfläche hergestellt und dessen visuelle Funktionen werden aktiviert, bevor jeder Test ausgeführt wird.

@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 einfachen Testregel eingerichtet haben, können Sie andere gängige Szenarien für Audio- und Displaybrillen testen, um die Funktionalität Ihrer App zu überprüfen.

Verbindung zum Testgerät getrennt

Wenn Sie testen möchten, wie Ihre App reagiert, wenn die Verbindung zur Brille unterbrochen wird, verwenden Sie die Property isDeviceConnected:

@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 Attribute wie isDeviceConnected vor jedem Test auf die Standardwerte zurück. Sie müssen diese Eigenschaften in @After-Methoden nicht manuell zurücksetzen.

Verschiedene Gerätefunktionen testen

Auf Displaybrillen können UIs angezeigt werden, die mit Jetpack Compose Glimmer erstellt wurden. Standardmäßig aktiviert ProjectedTestRule CAPABILITY_VISUAL_UI. Mit dem capabilities-Set können Sie genau festlegen, was das übertragene Gerät unterstützt. Das ist nützlich, um zu prüfen, ob Ihre App korrekt nach Hardwareunterstützung 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 Attribute wie capabilities vor jedem Test auf die Standardwerte zurück. Sie müssen diese Eigenschaften in @After-Methoden nicht manuell zurücksetzen.
  • Wenn Sie das Verhalten speziell für eine Aktivität überprüfen müssen, bei der Brillen angezeigt werden sollen, verwenden Sie launchTestProjectedDeviceActivity.