🚀 Aula Prática: Criando seu primeiro App com Testes

Objetivo: Desenvolver um Conversor de Moedas usando TDD no Windows.


💻 1. Preparando o Ambiente (Windows)

Antes de começar, verifique se você tem:

  1. Extensões: No VS Code, instale o Extension Pack for Java.
  2. Criação do Projeto:
    • Pressione Ctrl + Shift + P.
    • Digite: Java: Create Java Project.
    • Selecione Maven No Archetype.
    • Nome do projeto: conversor-moedas.

📦 2. Configurando o “Cérebro” (pom.xml)

Abra o arquivo pom.xml e adicione a dependência do JUnit 5 dentro da tag <dependencies>:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.10.0</version>
    <scope>test</scope>
</dependency>
 

Isso permite que o Java entenda os comandos de teste.


🔄 3. O Fluxo TDD: Red, Green, Refactor

Trabalharemos em ciclos:

  1. 🔴 Red (Vermelho): Escrevemos um teste que dá erro porque o código ainda não existe.
  2. 🟢 Green (Verde): Escrevemos o código simples para o teste passar.
  3. 🔵 Refactor (Refatorar): Melhoramos o código mantendo-o funcionando.

📝 4. Etapa 1: O Teste que Falha (RED)

Crie o arquivo src/test/java/ConversorTest.java:

import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
 
public class ConversorTest {
    @Test
    public void testeConverterDolarParaReal() {
        Conversor service = new Conversor();
        double resultado = service.converter(10.0);
        assertEquals(50.0, resultado); // Esperamos que 10 * 5 = 50
    }
}
 

O VS Code ficará vermelho em Conversor. Não se desespere!


👨‍💻 5. Etapa 2: Criando a Lógica (GREEN)

Crie o arquivo src/main/java/Conversor.java:

public class Conversor {
    public double converter(double valorDolar) {
        // Implementação simples para o teste passar
        return valorDolar * 5.0; 
    }
}
 

Agora, volte ao teste e clique em Run Test. A barra deve ficar verde!


🛡️ 6. Etapa 3: Regras de Negócio (Erro)

E se o valor for negativo? Precisamos de um teste para isso:

@Test
public void testeNaoDeveAceitarValorNegativo() {
    Conversor service = new Conversor();
    assertThrows(IllegalArgumentException.class, () -> {
        service.converter(-1.0);
    });
}
 

Ajuste seu código com um if (valor < 0) para lançar a exceção.


🏆 7. Desafio Final: Sistema de Notas

Sua vez! Aplique o que aprendeu:

  • Crie uma classe CalculadoraNotas.
  • Crie testes para validar a média de 3 notas.
  • Regra: Se a média for >= 7, retorne “APROVADO”.
  • Dica: Use Alt + Shift + F para organizar seu código no VS Code!

🏁 Checkpoint de Aprendizado

  • O código de teste fica em src/test/java.
  • O código do app fica em src/main/java.
  • O JUnit é quem valida se o seu código está certo.
  • No VS Code, o ícone de “Frasco de Laboratório” mostra todos os seus testes.

⌨️ Dica de Pro: Atalhos e Terminal

Não use o mouse! Turbine sua produtividade:

  1. Abrir o Terminal: Ctrl + ' (teclado brasileiro) ou Ctrl + J.
  2. Rodar todos os testes: Digite mvn test e aperte Enter.
  3. Formatar código: Alt + Shift + F (deixa o código bonito).
  4. Importar o que falta: Ctrl + . (corrige o assertEquals e o @Test).

Vantagem: O comando mvn test gera um relatório completo no terminal.


Para apresentar, basta clicar no ícone do **Marp** no canto superior direito e selecionar **Toggle Marp Preview**. 

Gostaria que eu criasse um guia rápido de solução para os erros mais comuns que os alunos podem encontrar durante essa aula (como `ClassNotFound` ou erros de versão do Java)?