Testare il layout di Compose

Testa l'interfaccia utente dell'app per verificare che il comportamento del codice Compose sia corretto. In questo modo puoi rilevare gli errori in anticipo e migliorare la qualità della tua app.

Compose fornisce un insieme di API di test per trovare elementi, verificarne gli attributi ed eseguire azioni utente. Le API includono anche funzionalità avanzate come la manipolazione del tempo. Utilizza queste API per creare test affidabili che verifichino il comportamento della tua app.

Visualizzazioni

Se utilizzi le viste anziché Composizione, consulta la sezione generale Testare le app su Android.

In particolare, un buon punto di partenza è la guida Automate UI tests (Automatizza i test dell'interfaccia utente). Spiega come automatizzare i test eseguiti sul dispositivo, anche quando si utilizzano le visualizzazioni.

Concetti principali

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

  • Semantica: i test di composizione interagiscono con l'interfaccia utente utilizzando la semantica, che attribuisce un significato ai componenti dell'interfaccia utente e viene generata insieme alla gerarchia dell'interfaccia utente.
  • API di test: Compose fornisce API di test per trovare elementi, eseguire verifiche sul loro stato e sulle loro proprietà ed eseguire azioni per simulare le interazioni utente.
  • Sincronizzazione: per impostazione predefinita, i test di composizione si sincronizzano automaticamente con l'interfaccia utente, in attesa che sia inattiva prima di fare affermazioni o eseguire azioni.
  • Interoperabilità: nelle app ibride, i test possono interagire senza problemi con gli elementi basati su Compose e View e integrarsi con altri framework di test.

Cheatsheet per i test

Consulta la cheatsheet per i test per una panoramica di tutti gli argomenti chiave che devi conoscere sui test in Compose.

Configura

Configura l'app in modo da poter testare il codice di composizione.

Innanzitutto, aggiungi le seguenti dipendenze al file build.gradle del modulo contenente i test dell'interfaccia utente:

// 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 chiamata AndroidComposeTestRule. Con questa regola puoi impostare Scrivi contenuto o accedere all'attività. Puoi creare le regole utilizzando le funzioni di fabbrica createComposeRule o, se devi accedere a un'attività, createAndroidComposeRule. Un tipico test dell'interfaccia utente per Compose è il seguente:

// 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

  • Testare le app su Android: la pagina di destinazione principale per i test su Android offre una visione più ampia delle nozioni di base e delle tecniche di 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 localmente, sulla tua workstation.
  • Test con strumenti: è buona prassi eseguire anche test con strumenti. ovvero i test eseguiti direttamente sul dispositivo.
  • Integrazione continua: l'integrazione continua ti consente di integrare i test nella pipeline di deployment.
  • Esegui test su diverse dimensioni dello schermo: con così tanti dispositivi a disposizione degli utenti, devi testare diverse dimensioni dello schermo.
  • Espresso: sebbene sia destinato alle UI basate su visualizzazioni, le conoscenze di Espresso possono essere utili per alcuni aspetti dei test di Compose.

Codelab

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

Campioni