Testare il layout di Compose

Testa l'UI della tua app per verificare che il comportamento del codice di Compose sia corretto. In questo modo puoi individuare tempestivamente gli errori e migliorare la qualità della tua app.

Compose fornisce una serie di API di test per trovare elementi, verificare i relativi attributi ed eseguire azioni utente. Le API includono anche funzionalità avanzate come la manipolazione del tempo. Usate queste API per creare test affidabili per verificare il comportamento della vostra app.

visualizzazioni

Se utilizzi le visualizzazioni anziché Compose, consulta la sezione generale Testare le app su Android.

In particolare, un buon punto di partenza è la guida Automazione dei test dell'interfaccia utente. Illustra come automatizzare i test eseguiti sul dispositivo, anche durante l'utilizzo delle viste.

Concetti principali

Di seguito sono riportati alcuni concetti chiave per testare il codice di Compose.

  • Semantica: i test di scrittura interagiscono con l'interfaccia utente utilizzando la semantica, che dà significato a parti dell'interfaccia utente e vengono generati insieme alla gerarchia dell'interfaccia utente.
  • API di test: Compose fornisce API di test per trovare elementi, creare asserzioni sul loro stato e sulle loro proprietà, nonché eseguire azioni per simulare le interazioni degli utenti.
  • Sincronizzazione: per impostazione predefinita, i test di Compose si sincronizzano automaticamente con la UI, attendendo che sia inattivo prima di creare asserzioni o eseguire azioni.
  • Interoperabilità: nelle app ibride, i test possono interagire perfettamente con gli elementi basati su Compose e su quelli basati sulle visualizzazioni e integrarsi con altri framework di test.

Scheda di riferimento del test

Consulta la scheda di riferimento del test per una panoramica di tutti gli argomenti chiave che dovresti conoscere sui test in Compose.

Configura

Configura la tua app per consentirti di testare il codice di scrittura.

Innanzitutto, aggiungi le seguenti dipendenze al file build.gradle del modulo che contiene i test della UI:

// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")

Questo modulo include un ComposeTestRule e un'implementazione per Android denominata AndroidComposeTestRule. Con questa regola puoi impostare i contenuti di Scrivi o accedere all'attività. Puoi creare le regole utilizzando le funzioni di fabbrica, createComposeRule o, se hai bisogno di accedere a un'attività, createAndroidComposeRule. Un tipico test dell'interfaccia utente per Compose ha il seguente aspetto:

// file: app/src/androidTest/java/com/package/MyComposeTest.kt

class MyComposeTest {

    @get:Rule val composeTestRule = createComposeRule()
    // use createAndroidComposeRule<YourActivity>() if you need access to
    // an activity

    @Test
    fun myTest() {
        // Start the app
        composeTestRule.setContent {
            MyAppTheme {
                MainScreen(uiState = fakeUiState, /*...*/)
            }
        }

        composeTestRule.onNodeWithText("Continue").performClick()

        composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
    }
}

Risorse aggiuntive

  • App di test su Android: la pagina di destinazione principale per i test di Android offre una visione più ampia sulle tecniche e sui concetti fondamentali dei test.
  • Nozioni di base sui test: scopri di più sui concetti fondamentali alla base del test di un'app per Android.
  • Test locali: puoi eseguire alcuni test in locale, sulla tua workstation.
  • Test strumentati: è buona norma eseguire anche test con strumentazione. ovvero test eseguiti direttamente sul dispositivo.
  • Integrazione continua: l'integrazione continua consente di integrare i test nella pipeline di deployment.
  • Prova dimensioni dello schermo diverse: dato che sono disponibili molti dispositivi per gli utenti, dovresti testare schermi di dimensioni diverse.
  • Espresso: sebbene destinato alle UI basate su View, la conoscenza di Espresso può comunque essere utile per alcuni aspetti dei test di Compose.

Codelab

Per saperne di più, prova il codelab di test di Jetpack Compose.

Campioni