🚀 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

  1. 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 é .

  1. Escreva a linha de comando do Assertions que compara se o valor esperado () é igual ao valor que está guardado na variável valorCalculado.

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 09 Java_Sherlock) e clique em Commit to main.
  2. 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:

  1. A anotação é @Test. Gabarito da Prática 2:
  2. Assertions.assertEquals(10.0, valorCalculado);

Capitulo Anterior | Proximo Capitulo