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

[Dúvida] Erro JUnit com @BeforeEach

Na hora de testar o código com o @BeforeEach, não compila. Quando eu coloco o método inicializar antes de cada teste funciona normalmente. Não sei resolver.

package br.com.alura.RH.test;

import br.com.alura.RH.modelos.Desempenho;
import br.com.alura.RH.modelos.Funcionario;
import br.com.alura.RH.servico.ReajusteService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;

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

public class ReajusteServiceTest {

    private ReajusteService reajuste;
    private Funcionario funcionario;

    @BeforeEach
    public void inicializar(){
        System.out.println("Início do teste");
        this.reajuste = new ReajusteService();
        this.funcionario = new Funcionario("Matheus", LocalDate.now(), new BigDecimal("1000.00"));
    }

    @AfterEach
    public void finalizar(){
        System.out.println("Fim do teste");
    }

    /*@BeforeAll
    public static void comecoDeTodos(){
        System.out.println("Início de todos os testes");
    }

    @AfterAll
    public static void finalDeTodos(){
        System.out.println("Final de todos os testes");
    }*/

    @Test
    public void reajusteDeveriaSerdeTresPorCentoQaudnoDesempenhoForADesejar(){
        reajuste.concederReajuste(funcionario, Desempenho.A_Desejar);
        Assert.assertEquals(new BigDecimal("1030.00"), funcionario.getSalario());
    }

    @Test
    public void reajusteDeveriaSerdeQuinzePorCentoQuandoDesempenhoForBom(){
        reajuste.concederReajuste(funcionario, Desempenho.Bom);
        Assert.assertEquals(new BigDecimal("1150.00"), funcionario.getSalario());
    }

    @Test
    public void reajusteDeveriaSerdeVintePorCentoQuandoDesempenhoForExcelente(){
        reajuste.concederReajuste(funcionario, Desempenho.Excelente);
        Assert.assertEquals(new BigDecimal("1200.00"), funcionario.getSalario());
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá Matheus, tudo bem?

Pelo que entendi, você está tendo problemas ao utilizar o @BeforeEach nos seus testes com JUnit. Uma possível solução para esse problema é verificar se você está importando a anotação corretamente. No seu código, você está importando a anotação org.junit.jupiter.api.BeforeEach, que é a anotação utilizada a partir da versão 5 do JUnit. Porém, você pode estar utilizando a versão 4 do JUnit nas suas dependências.

Para resolver esse problema, você pode trocar a importação da anotação para org.junit.Before e tentar novamente. Ficaria assim:

import org.junit.Before;
...
@Before
public void inicializar(){
    System.out.println("Início do teste");
    this.reajuste = new ReajusteService();
    this.funcionario = new Funcionario("Matheus", LocalDate.now(), new BigDecimal("1000.00"));
}

Espero ter ajudado e bons estudos!

Consegui arrumar aqui sim Matheus, reparei que o meu código está com uma mistura de versões do JUnit por isso ocorreu o erro. Obrigado pela ajuda, tenha um ótimo dia !