Java/Qualidade e Testes/Teste Unitário JUnit
Java⏱ ~2 min de leitura

Teste Unitário JUnit

@Test, assertions e boas práticas

Testes unitários verificam que cada unidade do código (geralmente um método) funciona corretamente de forma isolada. JUnit 5 (Jupiter) é o framework padrão no ecossistema Java, presente em qualquer projeto Maven/Gradle com Spring Boot.

A anotação @Test marca um método como teste. Assertions verificam o comportamento esperado: assertEquals compara valores, assertTrue verifica condição, assertThrows verifica que uma exceção foi lançada, assertAll verifica múltiplas condições. @BeforeEach e @AfterEach executam código antes/depois de cada teste para configurar e limpar o estado.

A convenção AAA estrutura cada teste: Arrange (prepara dados e mocks), Act (executa a ação a testar), Assert (verifica o resultado). Testes devem ser FIRST: Fast (rápidos), Independent (independentes entre si), Repeatable (mesmo resultado sempre), Self-validating (passam ou falham sem intervenção) e Timely (escritos junto com o código).

Exemplo.java
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;

class CalculadoraTest {

    Calculadora calc;

    @BeforeEach  // executa antes de CADA teste
    void setUp() {
        calc = new Calculadora();
    }

    @Test
    @DisplayName("Soma de dois positivos retorna a soma correta")
    void deveSomarDoisPositivos() {
        // Arrange
        int a = 5, b = 3;
        // Act
        int resultado = calc.somar(a, b);
        // Assert
        assertEquals(8, resultado, "5 + 3 deve ser 8");
    }

    @Test
    void deveLancarExcecaoAoDividirPorZero() {
        assertThrows(ArithmeticException.class, () -> {
            calc.dividir(10, 0);
        });
    }

    @Test
    void verificaMultiplasCondicoes() {
        assertAll("operações básicas",
            () -> assertEquals(10, calc.somar(7, 3)),
            () -> assertEquals(4,  calc.subtrair(7, 3)),
            () -> assertEquals(21, calc.multiplicar(7, 3))
        );
    }
}
💡 Dica pro

TDD (Test-Driven Development): escreva o teste antes do código (ele falha — red), implemente o mínimo para passar (green), depois refatore (refactor). Esse ciclo red-green-refactor produz código mais limpo e bem testado.

Recompensa+40 XP+exercícios