Automatizzare la gestione dei dispositivi virtuali con regole di test proiettate

projectedtestrule, gestione dei dispositivi virtuali

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Occhiali audio e
display

È 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 isDeviceConnected ai 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 capabilities ai 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.