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