Aula 14 - Testes e Qualidade 🐞
🔍 Por que testar?
Erros custam caro.
- Perda de usuários.
- Má fama na loja (1 estrela).
- Prejuízo financeiro.
"Testar é o ato de provar que seu código faz o que você diz que ele faz."
📝 O Logcat Profissional
Pare de usar println. Use etiquetas!
- Log.d: Debug (lógica).
- Log.i: Informação (eventos).
- Log.w: Aviso (algo estranho).
- Log.e: Erro grave.
🛠️ O Modo Debug (Besouro)
Seu superpoder de investigação.
- Breakpoint: "Congele" o tempo naquela linha.
- Variables Panel: Veja o que tem dentro de cada objeto.
- Evaluate Expression: Execute código no meio da pausa! 🎩
🏔️ A Pirâmide de Testes
Não teste tudo da mesma forma.
- Unitários (70%): Lógica pura, rápidos.
- Integração (20%): Peças conversando.
- UI / Espresso (10%): O robô clica na tela.
Teste Unitário (JUnit) 🧪
@Test
fun login_comSenhaVazia_deveRetornarErro() {
val result = validador.verificar("", "123")
assertFalse(result)
}
- Roda no seu PC (JVM).
- Leva milissegundos.
Teste de UI (Espresso) ☕
O robô que simula o usuário.
onView(withId(R.id.btnEnter)).perform(click())
onView(withId(R.id.txtWelcome)).check(matches(isDisplayed()))
- Roda no Emulador/Celular.
- Lento, mas testa a experiência real.
🛡️ Tratamento de Exceções
Previna o "O App parou".
🆚 Android vs iOS (Qualidade)
| Ferramenta | Android | iOS |
|---|---|---|
| Unit Testing | JUnit / Mockito | XCTest |
| UI Testing | Espresso / Barista | XCUITest |
| Logs | Logcat | Console (os_log) |
| Profiler | Android Profiler | Xcode Instruments |
🏃 CI/CD: Automação
Nunca envie código quebrado para o GitHub.
- GitHub Actions: Roda seus testes a cada "Push".
- Lint: Analisa se o seu código está limpo e segue padrões.
🛠️ Prática: Meu Primeiro Teste
- Vá na pasta
src/test/java. - Crie uma função que soma dois números.
- Escreva um
@Testque useassertEquals. - Clique no "Play" verde ao lado da função.
🏁 Conclusão
- Programador bom é o que testa.
- Use logs com sabedoria.
- Aprenda a ler o Stack Trace (o relatório de erros).