Testar o layout do Compose

Teste a interface do app para verificar se o comportamento do código do Compose está correto. Isso permite que você detecte erros mais cedo e melhore a qualidade do aplicativo.

O Compose oferece um conjunto de APIs de teste para encontrar elementos, verificar os atributos deles e realizar ações do usuário. Elas também incluem recursos avançados, como manipulação de tempo. Use essas APIs para criar testes robustos que verifiquem o comportamento do app.

Visualizações

Se você está trabalhando com visualizações em vez do Compose, consulte a seção geral Testar apps no Android.

Um bom lugar para começar é o guia Automatizar testes de interface. Ele descreve como automatizar testes executados no dispositivo, inclusive ao usar visualizações.

Conceitos principais

Confira abaixo alguns conceitos importantes para testar o código do Compose.

  • Semântica: os testes do Compose interagem com a interface usando semântica, que dão significado a partes da interface e são gerados com a hierarquia da interface.
  • APIs de teste: o Compose fornece APIs de teste para encontrar elementos, fazer declarações sobre o estado e as propriedades deles e realizar ações para simular interações do usuário.
  • Sincronização: por padrão, os testes do Compose são sincronizados automaticamente com a interface, aguardando que ela fique inativa antes de fazer declarações ou executar ações.
  • Interoperabilidade: em apps híbridos, os testes podem interagir perfeitamente com elementos do Compose e com base em visualização, além de se integrar a outros frameworks de teste.

Folha de referência de testes

Consulte a folha de referência de testes para ter uma visão geral de todos os principais tópicos que você precisa aprender sobre testes no Compose.

Configurar

Configure seu app para permitir testar o código do Compose.

Primeiro, adicione as seguintes dependências ao arquivo build.gradle do módulo que contém seus testes de IU:

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

Esse módulo inclui um ComposeTestRule e uma implementação para Android chamada AndroidComposeTestRule. Com essa regra, é possível definir o conteúdo do Compose ou acessar a atividade. Você cria as regras usando funções de fábrica, createComposeRule ou, se precisar acessar uma atividade, createAndroidComposeRule. Um teste de interface típico para o Compose tem esta aparência:

// 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()
    }
}

Outros recursos

  • Testar apps no Android: a página de destino principal de testes do Android oferece uma visão mais ampla dos fundamentos e das técnicas de teste.
  • Conceitos básicos de testes:saiba mais sobre os principais conceitos por trás do teste de um app Android.
  • Testes locais: é possível executar alguns testes localmente, na sua própria estação de trabalho.
  • Testes instrumentados:é uma prática recomendada também executar testes de instrumentação. Ou seja, testes executados diretamente no dispositivo.
  • Integração contínua: a integração contínua permite integrar seus testes ao pipeline de implantação.
  • Teste diferentes tamanhos de tela:com alguns dispositivos disponíveis para os usuários, teste diferentes tamanhos de tela.
  • Espresso: embora seja destinado a interfaces baseadas em visualização, o conhecimento do Espresso ainda pode ser útil para alguns aspectos dos testes do Compose.

Codelab

Para saber mais, consulte o codelab sobre como testar no Jetpack Compose.

Exemplos