È difficile automatizzare i test quando il codice dipende dall'hardware fisico. Ad esempio, potresti dover connettere e disconnettere manualmente il dispositivo fisico per verificare gli stati della connessione. Con tutti i diversi tipi, funzionalità e stati del dispositivo di occhiali audio e occhiali con 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 di base 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, prova altri scenari comuni per gli occhiali audio e gli occhiali con display per verificare la funzionalità della tua app.
Disconnessione del dispositivo di test
Per testare la reazione della tua 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 con display possono mostrare UI create con Jetpack Compose Glimmer. Per impostazione predefinita, il
ProjectedTestRule attiva CAPABILITY_VISUAL_UI. Per definire esattamente cosa supporta il
dispositivo proiettato, utilizza il set capabilities. Ciò è 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à che
prevede la visualizzazione di occhiali, utilizza
launchTestProjectedDeviceActivity.