Mam fragment kodu, który wygląda mniej więcej tak:
function bool PassesBusinessRules()
{
bool meetsBusinessRules = false;
if (PassesBusinessRule1
&& PassesBusinessRule2
&& PassesBusinessRule3)
{
meetsBusinessRules= true;
}
return meetsBusinessRules;
}
Uważam, że dla tej konkretnej funkcji powinny być cztery testy jednostkowe. Trzy, aby przetestować każdy z warunków w instrukcji if i upewnić się, że zwraca false. I kolejny test, który upewnia się, że funkcja zwraca true.
Pytanie: Czy zamiast tego powinno być dziesięć testów jednostkowych? Dziewięć, które sprawdza każdą z możliwych ścieżek awarii. TO ZNACZY:
- Fałsz Fałsz Fałsz
- Fałsz Fałsz Prawda
- Fałsz Prawda Fałsz
I tak dalej dla każdej możliwej kombinacji.
Myślę, że to przesada, ale niektórzy inni członkowie mojego zespołu nie. Patrzę na to, jeśli BusinessRule1 zawiedzie, to zawsze powinien zwracać false, nie ma znaczenia, czy został sprawdzony pierwszy czy ostatni.