Pense que ao escrever um teste unitário, você está definindo o comportamento do seu método. Se você precisa prever/determinar um determinado comportamento para um valor nulo então você deve escrever esse teste, caso contrário, pode ser que você esteja sendo redundante.
A
anderson_lr
Olá rmendes, valeu pela resposta. Na verdade a validação desses parâmetros seriam pra evitar um possível NullPointerException.
R
rmendes08
Certo, digamos que você faça essa validação para evitar o NullPointerException, qual seria o comportamento do método então ?
Não entendi, o nome do seu teste diz que naoDeveDividirSeAForNulo, mas o teste em si permite que essa divisão seja feita ?!
Repare que o compilador não pode verificar a semântica entre métodos e tipos de retorno. No nível da linguagem de programação, uma operação que retorna null é uma operação igualmente válida, diferentemente de uma operação que lança uma NullPointerException. Assim, nem sempre é bom negócio evitar NullPointerException. Justamente porque elas acusam o local exato do erro.
A
anderson_lr
Pessoa, era só um exemplo, um exemplo mais concreto seria esse:
O que os seus testes estão dizendo é que passar null para o método dividir não é uma situação de erro. O que você fez foi definir que:
- a divisão de um nulo por não nulo resulta em nulo
e
- a divisão de um não nulo por nulo resulta em nulo
Sendo assim, os nomes dos testes não condizem com a semântica deles, pois se o que você pretende é tratar os parâmetros nulos como erros você simplesmente deve permitir que as exceções sejam lançadas.