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
isDeviceConnectedvor 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
capabilitiesvor 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.