projectedtestrule, Verwaltung virtueller Geräte
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
isDeviceConnectedvor 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
capabilitiesvor 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.