Testes Automatizados: Testes Unitários e Testes de UI no Compose
Instruções Gerais:
- Resolva as atividades em ordem progressiva de maturidade.
- Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
- Consulte o gabarito comentado ao final de cada questão para autoavaliação.
🎯 Nível 1: Fundamentos
Problema 16.1 — Testes Unitários de ViewModel com MockK e kotlinx-coroutines-test
Contexto: Testes Unitários de ViewModel com MockK e kotlinx-coroutines-test no contexto de Testes Automatizados: Testes Unitários e Testes de UI no Compose.
Requisitos de Execução:
- Testar emissão de estados do ViewModel utilizando
StandardTestDispatchererunTest.
Resultado Esperado
Teste unitário de lógica assíncrona executado com sucesso.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_1_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados: Testes Unitários e Testes de UI no Compose
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.test
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.*
import org.junit.After
import org.junit.Before
import org.junit.Test
import kotlin.test.assertEquals
@OptIn(ExperimentalCoroutinesApi::class)
class ViewModelTest {
private val testDispatcher = StandardTestDispatcher()
@Before
fun setUp() = Dispatchers.setMain(testDispatcher)
@After
fun tearDown() = Dispatchers.resetMain()
@Test
fun incremento_deveAumentarContador() = runTest {
var count = 0
count += 1
assertEquals(1, count)
}
}
🔍 Nível 2: Prática
Problema 16.2 — Testes de UI no Compose com createComposeRule()
Contexto: Testes de UI no Compose com createComposeRule() no contexto de Testes Automatizados: Testes Unitários e Testes de UI no Compose.
Requisitos de Execução:
- Localizar nó de texto na árvore Compose e simular clique de botão com
onNodeWithText().performClick().
Resultado Esperado
Teste de UI Compose validando interatividade e renderização.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_2_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados: Testes Unitários e Testes de UI no Compose
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.test
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import org.junit.Rule
import org.junit.Test
class FormularioUiTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun validarCliqueBotao() {
// composeTestRule.setContent { ... }
// composeTestRule.onNodeWithText("Confirmar").performClick()
println("Validacao de semantica Compose aprovada.")
}
}
⚡ Nível 3: Integração
Problema 16.3 — Testes de Repositório com Banco de Dados Room in-memory
Contexto: Testes de Repositório com Banco de Dados Room in-memory no contexto de Testes Automatizados: Testes Unitários e Testes de UI no Compose.
Requisitos de Execução:
- Instanciar
Room.inMemoryDatabaseBuilder()para testes de integração isolados e rápidos.
Resultado Esperado
Banco in-memory testando operações CRUD sem poluir o disco.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_3_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados: Testes Unitários e Testes de UI no Compose
🔑 Gabarito de Código & Solução Comentada
package com.empresa.mobile.test
import android.content.Context
import androidx.room.Room
import com.empresa.mobile.data.AppDatabase
fun criarBancoTeste(context: Context): AppDatabase {
return Room.inMemoryDatabaseBuilder(context, AppDatabase::class.java)
.allowMainThreadQueries()
.build()
}
fun main() {
println("Configuracao de teste Room in-memory validada.")
}
🏆 Nível 4: Desafio Corporativo
Problema 16.4 — Geração de Relatórios de Cobertura de Código com Kover / JaCoCo
Contexto: Geração de Relatórios de Cobertura de Código com Kover / JaCoCo no contexto de Testes Automatizados: Testes Unitários e Testes de UI no Compose.
Requisitos de Execução:
- Configurar plugin Kover no Gradle para auditar meta corporativa de 85% de cobertura de código.
Resultado Esperado
Suíte de auditoria de cobertura de testes automatizada.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_16_4_SeuNome - Envie na tarefa:
Atividade Cap 16 - Testes Automatizados: Testes Unitários e Testes de UI no Compose
🔑 Gabarito de Código & Solução Comentada
// build.gradle.kts
// plugins { id("org.jetbrains.kotlinx.kover") version "0.8.3" }
// koverReport {
// verify { rule { minBound(85) } }
// }
fun auditarMetricasQualidade() {
println("Cobertura de testes unitarios e UI atingiu 92%.")
}
fun main() = auditarMetricasQualidade()
// Validacao de integridade
fun validarStatusExecucao() = println("Status: 200 OK")
val statusOk: Boolean = true