Teste a interface do app para verificar se o comportamento do código do Compose está correto. Isso permite detectar erros mais cedo e melhorar a qualidade do app.
O Compose fornece um conjunto de APIs de teste para encontrar elementos, verificar atributos e executar ações do usuário. As APIs também incluem recursos avançados, como a manipulação de tempo. Use essas APIs para criar testes robustos que verifiquem o comportamento do app.
Visualizações
Se você estiver trabalhando com visualizações em vez de Compose, consulte a seção geral Testar apps no Android.
Um bom ponto de partida é o guia Automatizar testes de IU. Ele explica como automatizar testes executados no dispositivo, inclusive ao usar visualizações.
Conceitos principais
Confira a seguir alguns conceitos importantes para testar seu código do Compose.
- Semântica: os testes do Compose interagem com a interface usando semântica, que dá significado a partes da interface e é gerada junto 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 realizar ações.
- Interoperabilidade: em apps híbridos, os testes podem interagir perfeitamente com elementos baseados no Compose e no View e 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 o app para 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 uma 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ê constrói as regras usando funções de fábrica,
createComposeRule
ou, se precisar de acesso a uma atividade,
createAndroidComposeRule
. Um teste de interface típico do 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 inicial principal de testes do Android oferece uma visão mais ampla dos conceitos básicos e das técnicas de teste.
- Conceitos básicos de testes:saiba mais sobre os principais conceitos por trás dos testes de um app Android.
- Testes locais:é possível executar alguns testes localmente na sua estação de trabalho.
- Testes instrumentados:é uma boa prática também executar testes instrumentados. 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.
- Testar diferentes tamanhos de tela:com alguns dispositivos disponíveis para os usuários, é necessário testar diferentes tamanhos de tela.
- Espresso: embora seja destinado a interfaces baseadas em visualizações, 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.
Amostras
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Semântica no Compose
- Encartes de janela no Compose
- Outras considerações