🚀 Capítulo 09: O Olho de Sherlock (Tema: Sherlock Holmes)
NOTE
Este capítulo utiliza a temática de Sherlock Holmes para explicar os Testes Automatizados com JUnit em Java. Prove que o seu código funciona sem deixar margem para dúvidas!
1. 🎯 Objetivo da Aula
Compreender a importância dos Testes Automatizados, aprender a criar classes de teste usando o framework JUnit e o conceito de asserções.
2. 🏢 O Cenário Prático (Seu Desafio)
O brilhante detetive Sherlock Holmes nunca confia no acaso ou em palpites para resolver um mistério. Para descobrir o culpado, ele cria hipóteses lógicas e as testa rigorosamente no seu laboratório: “Se eu pingar este reagente químico nesta mancha e ela ficar azul, significa que é sangue. Se não ficar azul, minha hipótese está errada!”
No desenvolvimento de software profissional, nós não podemos confiar apenas na sorte de que o nosso código funciona porque rodamos ele uma vez manualmente. Nós precisamos criar Testes Automatizados!
- São pequenos códigos que servem exclusivamente para testar se as funções do nosso sistema estão funcionando como deveriam.
- Em Java, a ferramenta padrão e mais famosa do mundo para fazer isso se chama JUnit. Seu desafio é ser tão rigoroso quanto Sherlock!
🧠 Fundamentos: A Teoria Traduzida
🏷️ 1. A Anotação @Test:
Para dizer ao JUnit que uma função não é uma função comum, mas sim um teste que deve ser executado, nós colocamos a anotação @Test em cima dela!
⚖️ 2. As Asserções (Assertions):
São os comandos que fazem a comparação entre o que nós esperamos que aconteça e o que o código realmente devolveu. A mais famosa é a assertEquals(esperado, atual).
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class CalculadoraTest {
@Test
void testarSoma() {
Calculadora calc = new Calculadora();
int resultado = calc.somar(2, 3);
// Sherlock verifica se 2 + 3 é realmente igual a 5!
Assertions.assertEquals(5, resultado);
}
}Se o resultado for igual a , o teste passa (bolinha verde). Se for qualquer outro número, o teste falha (bolinha vermelha) e avisa o programador!
5. 🛠️ Prática Obrigatória 1: A Anotação
- Qual é a anotação do JUnit que você deve colocar obrigatoriamente antes de um método para que o Java saiba que aquilo é um teste automatizado?
6. 🛠️ Prática Obrigatória 2: A Verificação
Imagine que você está testando um método que calcula o desconto de um produto e o valor correto esperado é .
- Escreva a linha de comando do
Assertionsque compara se o valor esperado () é igual ao valor que está guardado na variávelvalorCalculado.
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 09 Java_Sherlock) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
spec_backend_com_java_e_springboot/
├── capitulos/
│ └── capitulo_09_sherlock.md💡 Checkpoint de Lógica
Os testes automatizados são ótimos porque quando você altera o código no futuro para adicionar um recurso novo, você pode rodar os testes novamente para garantir que não quebrou nada do que já estava funcionando!
10. 🔥 Desafio de Fixação
Pesquise o que significa o termo Mock (ou Mockar) no mundo dos testes automatizados e por que usamos bibliotecas como o Mockito em Java.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- A anotação é
@Test. Gabarito da Prática 2: Assertions.assertEquals(10.0, valorCalculado);