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

Dúvida no Ex 1 da Aula 5 Testando Exceções

No momento em que estou fazendo o exercício, a anotação [ExpectedException(typeof(Exception))] foi removida do NUnit. Então implementei assim:

[Test]
        public void NaoDeveAvaliarLeiloesSemNenhumLanceDado()
        {
            Leilao leilao = new CriadorDeLeilao()
                .Para("Playstation 3 Novo")
                .Constroi();                       

            Assert.Throws<Exception>(() => leiloeiro.Avalia(leilao));
        }

Gostaria de saber se está certo, já que aqui o teste passou numa boa.

2 respostas
solução!

Oi Ademir, não sei se é o modo convencional, mas pela documentação parece que um código bem ok sim.

Só para constar, parece ser isso aí mesmo. Passei pelo mesmo problema aqui e depois de muito fuçar na internet a única implementação que encontrei foi justamente essa - até mais complicada que a das versões anteriores.

Em Assert.Throws, xpto = tipo da exceção esperada, caso você esteja esperando algum tipo de exceção específica. No caso do exercício estamos lançando uma "Exception" genérica, então é isso que vamos capturar no Assert mesmo.

Já o parâmetro dentro do parênteses precisa também ser uma expressão lambda, que pelo que eu entendi nos exemplos que encontrei por aí, do lado esquerdo sempre vai ser "()" e do lado direito é a chamada do método que você quer testar.