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

Assert.fail()

Olá,

No código abaixo, como não há lances, a exceção sempre será lançada, sendo o catch chamado neste caso, logo o Assert.fail() dentro do bloco try nunca será executado. Então qual é a razão dele estar no código?

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

        leiloeiro.avalia(leilao);
        Assert.fail();
    }
    catch(RuntimeException e) {
        // deu certo!
    }
}
1 resposta
solução!

Olá Roger, tudo bem?

Pelo código nunca chegar no Assert.fail() o teste passará. Como é esperado uma exceção, se o Assert.fail() for executado, significa que não deu exceção, logo o teste deu errado.

Existe outra maneira de dizer que um teste espera uma exceção. Utilizando a anotação @Teste o parâmetro expected passando a classe da exceção:

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

        leiloeiro.avalia(leilao);
}

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