1
resposta

Problemas no JUnit

Boa noite,

Alguém poderia me ajudar com este erro?

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

package main.java.br.com.alura.tdd.service;

import java.math.BigDecimal;

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

public class ReajusteService {

    public void concederReajuste(Funcionario funcionario, Desempenho desempenho) {
        if(desempenho == Desempenho.A_DESEJAR) {
            BigDecimal reajuste = funcionario.getSalario().multiply(new BigDecimal("0.03"));
            funcionario.reajustarSalario(reajuste);
        }
    }
}
package teste_java;

import static org.junit.Assert.assertEquals;

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

import org.junit.jupiter.api.Test;

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.ReajusteService;

public class ReajusteServiceTest {

    @Test
    public void reajusteDeveriaSerDeTresPorCentoQuandoDesempenhoForADesejar() {

        ReajusteService service = new ReajusteService();
        Funcionario funcionario = new Funcionario("Marília", LocalDate.now(), new BigDecimal("1000.00"));

        service.concederReajuste(funcionario, Desempenho.A_DESEJAR);

        assertEquals("1030.00", funcionario.getSalario());
    }
}
package main.java.br.com.alura.tdd.modelo;

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

public class Funcionario {

    private String nome;
    private LocalDate dataAdmissao;
    private BigDecimal salario;

    public Funcionario(String nome, LocalDate dataAdmissao, BigDecimal salario) {
        this.nome = nome;
        this.dataAdmissao = dataAdmissao;
        this.salario = salario;
    }

    public String getNome() {
        return nome;
    }

    public LocalDate getDataAdmissao() {
        return dataAdmissao;
    }

    public BigDecimal getSalario() {
        return salario;
    }

    public void reajustarSalario(BigDecimal reajuste) {
        this.salario = this.salario.add(reajuste).setScale(2, RoundingMode.HALF_UP);
    }
}
1 resposta

Oi Alisson,

Nessa linha:

assertEquals("1030.00", funcionario.getSalario());

Você está passando o valor 1030.00 como String, mas na verdade deveria ser BigDecimal:

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