Ao testar o código com variações percebi que se eu colocar a exceção IllegalArgumentException na classe de calculo de Bônus e ao mesmo tempo colocar o test de assertThrows(Exepetion.class, ...) o teste acaba passando. Imagino que a resposta esteja relacionada com a herança da classe Exception. Mas o mesmo vale para outras classes ? Por exemplo para List e LinkedList.
Classe de Teste
class BonusServiceTest {
@Test
void bonusDoSalarioMaiorQueMil() {
BonusService service = new BonusService();
//testa a exceção
assertThrows(Exception.class,() -> service.calcularBonus(new Funcionario("test1", LocalDate.now(),new BigDecimal(25000))));
}
}
Classe do BonusService
public class BonusService {
public BigDecimal calcularBonus(Funcionario funcionario) {
//Verifica se o salário do funcionario é maior que 10000.00, caso sim, ele não pode receber bonus
//é lançado então a excessão
if(funcionario.getSalario().compareTo(new BigDecimal("1000.00")) > 0){
throw new IllegalArgumentException("Salário não pode receber bonus");
}
//caso contrário, o calculo de bonus é realizado
BigDecimal valor = funcionario.getSalario().multiply(new BigDecimal("0.1"));
return valor;
}
}