Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

@BeforeEach não está funcionando no JUnit

Olá, estou seguindo os passos do professor no primeiro vídeo do módulo 5 do curso "TDD e Java: Testes automatizados com Junit" onde vimos que podemos simplificar o código de teste usando a anotação @BeforeEach antes do método que inicializa as variáveis. O problema é que o JUnit parece estar "ignorando" a anotação e não está fazendo isto. Eu fiz um teste manual colocando este método inicializador dentro de cada mátodo de teste, então a aplicação funcionou. Código abaixo:

package test.java;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import java.math.BigDecimal;
import java.time.LocalDate;

import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;

import main.java.br.com.alura.tdd.modelo.Desempenho;
import main.java.br.com.alura.tdd.modelo.Funcionario;
import main.java.br.com.alura.tdd.service.Reajuste;

public class ReajusteTest {

    private Reajuste reajuste;
    private Funcionario funcionario;

    @BeforeEach
    public void inicializar() {
        this.reajuste = new Reajuste();
        this.funcionario = new Funcionario("Gustavo", LocalDate.now(), new BigDecimal("1000.00"));
    }

    @Test
    public void reajusteDeveSerTresPorCentoSalario() { 
        reajuste.reajustar(funcionario, Desempenho.A_DESEJAR);
        assertEquals(new BigDecimal("1030.00"), funcionario.getSalario());
    }

    @Test
    public void reajusteDeveSerQuinzePorCentoSalario() {
        reajuste.reajustar(funcionario, Desempenho.BOM);
        assertEquals(new BigDecimal("1150.00"), funcionario.getSalario());
    }

    @Test
    public void reajusteDeveSerVintePorCentoSalario() {
        reajuste.reajustar(funcionario, Desempenho.OTIMO);
        assertEquals(new BigDecimal("1200.00"), funcionario.getSalario());
    }

    @Test
    public void reajusteDeveLancarExceptionPoisDesempenhoEhNull() {
        try {
            reajuste.reajustar(funcionario, null);
            fail();
        } catch (Exception e) {
            assertEquals("Deve haver um desempenho", e.getMessage());
        }
    }

}
3 respostas

Observação: acabei de passar o mouse em cima da anotação e reparei nisto:

solução!

Oi Gustavo,

O problema é que você importou a anoção @Test do JUnit4: import org.junit.Test;

Altere o import para: import org.junit.jupiter.api.Test;

Entendi! Agora funcionou, vlw prof Rodrigo!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software