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());
}
}
}