Eu tenho um pedaço de código que se parece com isso:
function bool PassesBusinessRules()
{
bool meetsBusinessRules = false;
if (PassesBusinessRule1
&& PassesBusinessRule2
&& PassesBusinessRule3)
{
meetsBusinessRules= true;
}
return meetsBusinessRules;
}
Acredito que deve haver quatro testes de unidade para essa função específica. Três para testar cada uma das condições na instrução if e garantir que ela retorne false. E outro teste que garante que a função retorne verdadeira.
Pergunta: Na verdade, deveria haver dez testes de unidade? Nove que verifica cada um dos possíveis caminhos de falha. IE:
- Falso Falso Falso
- Falso Falso Verdadeiro
- Falso Verdadeiro Falso
E assim por diante para cada combinação possível.
Eu acho que é um exagero, mas alguns dos outros membros da minha equipe não. A maneira como vejo é que, se BusinessRule1 falha, sempre deve retornar falso, não importa se foi verificado primeiro ou por último.