2
respostas

Não consigo rodar os três casos de teste mostrados no treinamento.

Olá, estou com problemas para executar os três casos de testes mostrados pelo Rodrigo no Capítulo três, aula três do curso TDD e Java: Testes automatizados com Junit. Quando eu executo o primeiro caso que é esse abaixo:

    @Test
    public void reajusteDeveriaSerDeTresPorCentoQuandoDesempenhoForADesejar() {
        ReajusteService service = new ReajusteService();
        Funcionario funcionario = new Funcionario("fulano", LocalDate.now(), new BigDecimal("1000"));

        service.concederReajusteSalarial(funcionario, Desempenho.A_DESEJAR);

        assertEquals(new BigDecimal("1030.00"), funcionario.getSalario());
    }

O teste passa pois agora o salário do funcionário é 1030.

Porém, ao acrescentar os outros dois casos de testes:

    @Test
    public void reajusteDeveriaSerDeQuinzePorCentoQuandoDesempenhoForBom() {
        (…Ocultei a implementação que é a mesma do teste anterior, conforme mostrado no vídeo.)

        assertEquals(new BigDecimal("1150.00"), funcionario.getSalario());
    }
    @Test
    public void reajusteDeveriaSerDeVintePorCentoQuandoDesempenhoForOtimo() {
        (…Ocultei a implementação que é a mesma do teste anterior, conforme mostrado no vídeo.)

        assertEquals(new BigDecimal("1200.00"), funcionario.getSalario());
    }

Apenas o primeiro teste passa e o Eclipse mostra o seguinte erro: AssertionFailedError: expected <1200.00> but was <1030>

Entendi que esse é o valor do primeiro teste e estou pesquisando como limpar as instâncias entre os testes, faz sentido pensar desse jeito? Eu entendi que cada vez que eu instanciar a classe Funcionário dentro de um método de teste eu estou gerando uma instância diferente, embora ele não tenha falado sobre isso no curso. Também removi o primeiro teste (aquele onde o valor do salário do funcionário é 1030) e executei somente os dois últimos, a mensagem de erro permanece. Desse modo, eu entendi que ele sequer entrou no if do ReajusteService, que recebe uma constante com o desempenho.

Também deixei meu código completo no github - https://github.com/barreirabruno/java-junit

2 respostas

Oi Bruno,

O problema é que na sua classe ReajusteService o método concederReajusteSalarial está recebendo uma String ao invés de receber o Enum Desempenho.

E você criou uma classe chamada Desempenho, ao invés de um enum.

Veja nesse vídeo, a partir do minuto 08:00, como eu criei as classes/enum: https://cursos.alura.com.br/course/tdd-java-testes-automatizados-junit/task/88544

Faça esses ajustes que vai funcionar.

Bons estudos!

Rodrigo, muito obrigado! Foi total erro de atenção mesmo e minha cabeça me levou para todas aquelas hipóteses que listei.

Obrigado pelo esclarecimentos!