Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Arredondamento

@Test
    public void biggestLowestAverageLanceTest() {

        Leilao leilao = new Leilao("Playstation 3 Novo");

        leilao.propoe(new Lance(maria, 250.0));
        leilao.propoe(new Lance(joao, 300.0));
        leilao.propoe(new Lance(jose, 400.0));

        // comparando a saida com o esperado
        double biggestLance = 400;
        double lowestLance = 250;
        double averageLance = 316.666666667;

        avaliador.avalia(leilao);

        assertThat(avaliador.getBiggestLance(), equalTo(biggestLance));
        assertThat(avaliador.getLowestLance(), equalTo(lowestLance));
        assertThat(avaliador.averageLance(leilao), equalTo(averageLance));
//        assertEquals(biggestLance, avaliador.getBiggestLance(), 0.0000001);
//        assertEquals(lowestLance, avaliador.getLowestLance(), 0.0000001);
//        assertEquals(averageLance, avaliador.averageLance(leilao), 0.0000001);
    }

Antes usando o assertEquals do JUnit mesmo e passando esse delta, o teste estava passando. Usando o AssertThat do Hamcrest, lança uma AssertionError:

java.lang.AssertionError: Expected: <316.666666667> but: was <316.6666666666667> Expected :<316.666666667>

Actual :<316.6666666666667>

na linha assertThat(avaliador.averageLance(leilao), equalTo(averageLance));

1 resposta
solução!

Olá, tudo bem ?

Acho que para esse tipo de conta que talvez você precise de muita precisão é mais recomendado usar o assert do junit, que trata essa parte de arredondamento.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software