1
resposta

Declaração de Throw em métodos de test

Boa tarde, gostaria de saber se há uma declaração ou forma de não precisar declarar throws de métodos que possuam uma exceção 'checked', como IllegalArgumentException, porque para mim não faz muito sentido ter em uma classe de testes um "throws LanceIllegalArgumentException" por exemplo.

Código na classe Lance:

public Lance(Usuario usuario, double valor) throws LanceIllegalArgumentException {
        if(valor<=0.00) throw new LanceIllegalArgumentException("Não é possível criar lance com valor menor ou igual a zero.");
        this.usuario = usuario;
        this.valor = valor;
}

Método de teste:

@Test(expected=LanceIllegalArgumentException.class)
public void naoAdicionaLanceComValorNegativo()**throws LanceIllegalArgumentException**{
    new Lance(new Usuario("João"), -100.00);
}

Não consegui colocar em negrito, mas meu problema é com o throws LanceIllegalArgumentException acima.

1 resposta

Olá Fábio. Conforme pode-se ver na documentação da Oracle ( https://docs.oracle.com/javase/8/docs/api/index.html?java/lang/IllegalArgumentException.html ) a classe IllegalArgumentException é filha de RuntimeException e portanto é unchecked. Desta forma, se a sua classe LanceIllegalArgumentException é filha de IllegalArgumentException , você não será obrigado a declarar throws no seu método.