📊 Capítulo 16: Testes Automatizados no Android
Especialização em Mobile Nativo Android
🗺️ A Pirâmide de Testes Automatizados no Android Nativo
flowchart TD
UNIT["1. Testes Unitários de ViewModel & UseCase (JUnit 5 + MockK + Turbine)\n- Executam na JVM local em milissegundos sem precisar de emulador"]
--> COMPOSE_UI["2. Testes de UI do Compose (createComposeRule)\n- Testam recomposição, cliques e assertIsDisplayed() na árvore semântica"]
--> INTEGRATION["3. Testes End-to-End no Emulador (createAndroidComposeRule)\n- Validam fluxos completos de ponta a ponta com banco Room e navegação"]
style UNIT fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style COMPOSE_UI fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style INTEGRATION fill:#ede7f6,stroke:#512da8,stroke-width:2px
🎯 Slide 1: Testando ViewModels & StateFlow com Turbine
@Test
fun `quando buscar produtos com sucesso deve emitir estado Success`() = runTest {
val repository = mockk<ProdutoRepository>()
coEvery { repository.getProdutos() } returns listOf(Produto(1, "Notebook"))
val viewModel = ProdutosViewModel(repository)
viewModel.uiState.test {
assertEquals(UiState.Loading, awaitItem())
val success = awaitItem() as UiState.Success
assertEquals(1, success.dados.size)
}
}
🎯 Slide 2: Testes de UI no Compose com Semântica
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun clicarNoBotaoDeveChamarCallback() {
var clicou = false
composeTestRule.setContent {
BotaoPrincipal(texto = "Salvar", onClick = { clicou = true })
}
composeTestRule.onNodeWithText("Salvar").performClick()
assertTrue(clicou)
}
🎯 Slide 3: Cobertura de Código com Kover
- O plugin Kotlin Kover gera relatórios visuais de cobertura de linhas e branches diretamente no CI/CD sem interferir na performance do build!
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim