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

java.lang.AssertionError: Expected exception: java.lang.RuntimeException

Tentei fazer o Run e deu fail, mas não consegui achar onde está o erro.

@Test(expected=RuntimeException.class)
    public void naoDeveAvaliarLeiloesSemNenhumLanceDado() {
        Leilao leilao = new CriadorDeLeilao()
            .para("Playstation 3 Novo")
            .constroi();

        leiloeiro.avalia(leilao);
    }

Segue abaixo o Stack Trace:

java.lang.AssertionError: Expected exception: java.lang.RuntimeException
    at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:34)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
2 respostas
solução!

Opa Sergio, tranquilo?

O teste espera uma exceção caso nenhum lance seja dado no leilão. Portanto, o teste falhar significa que o programa não está checando se lances foram dados. Vou pedir para que você dê uma olhada na sua classe AvaliadorTest, mais especificamente no método avalia(Leilao leilao). Quando o avaliador avalia() o leilão, ele checa se o número de lances é zero e, caso ele seja zero, uma RuntimeException é lançada e o teste naoDeveAvaliarLeiloesSemNenhumLanceDado() passa sem problemas.

Dá uma olhada no método avalia(Leilao leilao) e veja se essa condição que verifica a quantidade de lances está implementada dessa forma:

public class Avaliador {

    // Código omitido

    public void avalia(Leilao leilao) {

        if (leilao.getLances().size() == 0) {
            throw new RuntimeException("Não é possível avaliar um leilão sem lances!");
        }

        for (Lance lance : leilao.getLances()) {
            if (lance.getValor() > maiorDeTodos)
                maiorDeTodos = lance.getValor();
            if (lance.getValor() < menorDeTodos)
                menorDeTodos = lance.getValor();
        }
        pegaOsMaioresNo(leilao);
    }

    // Código omitido

Testa aí e depois me avisa se funcionou. Fico no aguardo!

Bons estudos!!

Resolvido, Obrigado.

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