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

Por que o método de teste é chamado dentro do método avalia e não diretamente?

Nos testes específicos, como pegaMaioresNo(leilao) e calculaMediaLances(leilao), na classe Avaliador, as chamadas a esses métodos são feitas dentro do método avalia(leilao). Na classe AvaliadorTest, em todos os testes a chamada é leiloeiro.avalia(leilao). Não poderia ser leiloeiro.pegaMaioresNo(leilao) ou leiloeiro.calculaMediaLances(leilao)?

Na classe Avaliador

    public void avalia(Leilao leilao) {
        for (Lance lance : leilao.getLances()) {
            if (lance.getValor() > maiorDeTodos) {
                maiorDeTodos = lance.getValor();
            }
            if (lance.getValor() < menorDeTodos) {
                menorDeTodos = lance.getValor();
            }
        }

        pegaOsmaioresNo(leilao);
    }

Na classe AvaliadorTest

    @Test
    public void deveEncontrarOsTresMaioresLances() {
        // parte 1: cenário
        Usuario joao = new Usuario("João");
        Usuario jose = new Usuario("José");
        Usuario maria = new Usuario("Maria");

        Leilao leilao = new Leilao("Playstaion 3 novo");

        leilao.propoe(new Lance(joao, 500.0));
        leilao.propoe(new Lance(jose, 300.0));
        leilao.propoe(new Lance(joao, 600.0));
        leilao.propoe(new Lance(maria, 700.0));
        leilao.propoe(new Lance(jose, 400.0));

        // parte 2: ação
        Avaliador leiloeiro = new Avaliador();
        leiloeiro.avalia(leilao);

        // parte 3: validação
        List<Lance> maiores = leiloeiro.getTresMaiores();

        assertEquals(3, maiores.size());
        assertEquals(700.0, maiores.get(0).getValor(), 0.00001);
        assertEquals(600.0, maiores.get(1).getValor(), 0.00001);
        assertEquals(500.0, maiores.get(2).getValor(), 0.00001);
    }
1 resposta
solução!

Oi Suely, tudo bem ?

A sua sugestão de código está muito boa e faz muito sentido. Acredito que quando o projeto foi desenvolvido fizeram dessa forma para ocorrer alguns problemas, que veremos mais para frente.