projectedtestrule, gestione dei dispositivi virtuali
È difficile automatizzare i test quando il codice dipende dall'hardware fisico. Ad esempio, potrebbe essere necessario collegare e scollegare manualmente il dispositivo fisico per verificare gli stati di connessione. Con tutti i diversi tipi, funzionalità, e stati dei dispositivi degli occhiali audio e display, questa sfida può diventare ancora più complessa. Per testare questo insieme diversificato di casi, utilizza le API Projected Test Rule per automatizzare la configurazione e la gestione di un ambiente di test proiettato. La libreria gestisce la creazione di dispositivi proiettati, gli stati di connessione e la verifica delle funzionalità, in modo che tu possa concentrarti sul test della logica principale della tua app. Utilizza queste API per creare suite di test robuste senza scrivere codice boilerplate.
Aggiungere dipendenze della libreria
Per utilizzare la regola di test, aggiungi l'artefatto di test al file build.gradle della tua app:
Alla moda
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")
}
Configurare la regola di test
Per configurare la regola di test di base, annota la regola nella classe di test. Per impostazione predefinita, la regola connette un dispositivo proiettato e ne attiva le funzionalità visive prima dell'esecuzione di ogni test.
@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() }
Testare altri scenari comuni
Ora che hai configurato l'ambiente di test proiettato con una regola di test di base, testa altri scenari comuni per gli occhiali audio e display per verificare la funzionalità della tua app.
Testare la disconnessione del dispositivo di test
Per testare la reazione dell'app quando la connessione con gli occhiali viene persa, utilizza la proprietà isDeviceConnected:
@Test fun testDeviceDisconnection() { // manually disconnect the device via the rule projectedTestRule.isDeviceConnected = false assertThrows(IllegalStateException::class.java) { ProjectedContext.createProjectedDeviceContext(context) } }
Punti chiave sul codice
- La regola reimposta le proprietà come
isDeviceConnectedai valori predefiniti prima di ogni test. Non è necessario reimpostare manualmente queste proprietà nei metodi@After.
Testare diverse funzionalità del dispositivo
Gli occhiali display possono mostrare UI create con Jetpack Compose Glimmer. Per impostazione predefinita, il
ProjectedTestRule abilita CAPABILITY_VISUAL_UI. Per definire esattamente ciò che supporta il dispositivo proiettato, utilizza l'insieme capabilities. Questa operazione è utile per verificare che l'app controlli correttamente il supporto hardware prima di tentare di proiettare i contenuti sugli occhiali.
@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) } }
Punti chiave sul codice
- La regola reimposta le proprietà come
capabilitiesai valori predefiniti prima di ogni test. Non è necessario reimpostare manualmente queste proprietà nei metodi@After. - Quando devi verificare il comportamento specifico di un'attività proiettata sugli occhiali display, utilizza
launchTestProjectedDeviceActivity.