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);
}