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

Dúvida exercício lances dados em ordem decrescente...

Quando li o enunciado, acreditava que eu teria que validar a ordem em que foi incluído os lances (decrescente) e não ter que ver o maior e menos valor.

O código proposto pelo instrutor é igual ao Crescente que fizemos anteriormente, o que tem alguma lógica. Mas depois de ver o exercício "deveEncontrarOsTresMaioresLances" e ler o enunciado do exercício em questão pensei em fazer o teste de outra forma.

Enunciado do exercício:

Por fim, teste que o Avaliador funciona para lances dados em ordem decrescente.

Crie Lances com valores de 400, 300, 200, 100, por exemplo, e garanta que a saída bata com os valores da entrada.

Código exibido pelo instrutor:

    @Test
    public void deveEntenderLeilaoComLancesEmOrdemDecrescente() {
        Usuario joao = new Usuario("Joao"); 
        Usuario maria = new Usuario("Maria"); 
        Leilao leilao = new Leilao("Playstation 3 Novo");

        leilao.propoe(new Lance(joao,400.0));
        leilao.propoe(new Lance(maria,300.0));
        leilao.propoe(new Lance(joao,200.0));
        leilao.propoe(new Lance(maria,100.0));

        Avaliador leiloeiro = new Avaliador();
        leiloeiro.avalia(leilao);

        assertEquals(400.0, leiloeiro.getMaiorLance(), 0.0001);
        assertEquals(100.0, leiloeiro.getMenorLance(), 0.0001);
    }

Meu Código:

    @Test
    public void deveEncontrarOsLancesEmOrdemDecrescente(){
        Usuario joao = new Usuario("Joao");
        Usuario maria = new Usuario("Maria");
        Leilao leilao = new Leilao("Playstation 3 Novo");

        leilao.propoe(new Lance(joao,400.0));
        leilao.propoe(new Lance(maria,300.0));
        leilao.propoe(new Lance(joao,200.0));
        leilao.propoe(new Lance(maria,100.0));        

        Avaliador leiloeiro = new Avaliador();
        leiloeiro.avalia(leilao);

        List<Lance> lances = leilao.getLances();
        assertEquals(4, lances.size());

        assertEquals(400.0, lances.get(0).getValor(), 0.0001);
        assertEquals(300.0, lances.get(1).getValor(), 0.0001);
        assertEquals(200.0, lances.get(2).getValor(), 0.0001);
        assertEquals(100.0, lances.get(3).getValor(), 0.0001);
    }
1 resposta
solução!

Olá Rafael,

Não entendi muito bem qual a sua dúvida. Mas a forma que você resolveu ficou bem completa, validando que todos os lances estão em ordem. Dependendo do teste, podemos validar só parte do problema, por exemplo, quando eu tiver que testar se um método aceita números inteiros positivos não preciso criar um teste para o "1" outro para o "2", posso simplesmente colocar 1 teste que verifica isso.

Você não entendeu errado. A ideia é realmente esta, validar a ordem dos lances. Acho que talvez não tenha ficado claro que o instrutor não quis validar cada item da lista.