Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Estou com dúvida no curso de Testes de Unidade e TDD, no exercício do capítulo Começando com testes de unidade.

Sobre o exercicio do valor medio qual seria a melhor maneira de inserir este trecho de código ?

Gostaria de saber se o que implementei esta correto.

3 respostas

A media simplesmente seria somar todo o conteúdo do array e dividir pelo seu tamanho !?

Até aonde entendi, sim. Além de escrever um teste para validar este número.

solução!

Segue a classe Avaliador, com o método que calcula a média (imports omitidos)

public class Avaliador {

    private double maiorDeTodos = Double.NEGATIVE_INFINITY;
    private double menorDeTodos = Double.POSITIVE_INFINITY;
    private double somaDosLances = 0;
    private int contadorLances = 0;

    public void avalia(Leilao leilao) {

        for (Lance lance : leilao.getLances()) {

            if (lance.getValor() > maiorDeTodos) {
                maiorDeTodos = lance.getValor();
            }
            if (lance.getValor() < menorDeTodos) {
                menorDeTodos = lance.getValor();
            }

            somaDosLances += lance.getValor();
            contadorLances++;
        }
    }

    public double getMaiorLance() {
        return maiorDeTodos;
    }

    public double getMenorLance() {
        return menorDeTodos;
    }

    public double mediaDosLances(){

        return somaDosLances / contadorLances;
    }

}

Na classe de teste:

        // comparando a saida com o esperado
        double maiorEsperado = 400;
        double menorEsperado = 250;
        double mediaEsperada = (250.0+300.0+400.0) / 3;

        Assert.assertEquals(maiorEsperado, leiloeiro.getMaiorLance(), 0.0001);
        Assert.assertEquals(menorEsperado, leiloeiro.getMenorLance(), 0.0001);
        Assert.assertEquals(mediaEsperada, leiloeiro.mediaDosLances(), 0.0001);