Testare il layout di Compose

Testa la UI della tua 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 efficaci che verifichino il comportamento della tua app.

Visualizzazioni

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

In particolare, un buon punto di partenza è la guida Automatizza i test della UI. Descrive come automatizzare i test eseguiti sul dispositivo, anche quando utilizzi le visualizzazioni.

Concetti principali

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

  • Semantica: la semantica dà un significato alla tua UI, consentendo ai test di interagire con elementi specifici.
  • API di test: le API di test ti consentono di trovare elementi, verificarne gli attributi ed eseguire azioni utente.
  • Sincronizzazione: la sincronizzazione verifica che i test attendano che la UI sia inattiva prima di eseguire azioni o fare asserzioni.
  • Interoperabilità: l'interoperabilità consente ai test di funzionare sia con gli elementi basati su Compose sia con quelli basati su View nella stessa app.

Scheda di riferimento per i test

Consulta il cheatsheet sui test per una panoramica di tutti gli argomenti chiave che dovresti conoscere sui test in Compose.

Configurazione

Configura la tua app per testare il codice di Compose.

Innanzitutto, aggiungi le seguenti dipendenze al file build.gradle del modulo contenente 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 chiamata AndroidComposeTestRule. Tramite questa regola puoi impostare i contenuti di Scrivi o accedere all'attività. Puoi creare le regole utilizzando le funzioni factory, createComposeRule o, se hai bisogno di accedere a un'attività, createAndroidComposeRule. Un tipico test della UI per Compose è simile al 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

  • Testa le app su Android: la pagina di destinazione principale dei test su Android offre una visione più ampia dei concetti fondamentali e delle tecniche di test.
  • Concetti fondamentali sul test di app Android: scopri di più sui concetti di base alla base del test di un'app per Android.
  • Test locali: puoi eseguire alcuni test localmente, sulla tua workstation.
  • Test di instrumentazione: è buona norma eseguire anche i test di instrumentazione. ovvero test eseguiti direttamente sul dispositivo.
  • Integrazione continua: l'integrazione continua ti consente di integrare i test nella pipeline di deployment.
  • Testa diverse dimensioni dello schermo:con così tanti dispositivi a disposizione degli utenti, devi eseguire test per diverse dimensioni dello schermo.
  • Espresso: sebbene sia destinato alle UI basate su View, la conoscenza di Espresso può comunque essere utile per alcuni aspetti dei test di Compose.

Codelab

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

Esempi