У меня есть кусок кода, который выглядит примерно так:
function bool PassesBusinessRules()
{
bool meetsBusinessRules = false;
if (PassesBusinessRule1
&& PassesBusinessRule2
&& PassesBusinessRule3)
{
meetsBusinessRules= true;
}
return meetsBusinessRules;
}
Я считаю, что должно быть четыре модульных теста для этой конкретной функции. Три, чтобы проверить каждое из условий в операторе if и убедиться, что оно возвращает false. И еще один тест, который проверяет, что функция возвращает true.
Вопрос: Должно ли на самом деле быть десять юнит-тестов? Девять, которая проверяет каждый из возможных путей отказа. IE:
- Ложь Ложь Ложь
- Ложь Ложь Истина
- Ложь верно ложь
И так далее для каждой возможной комбинации.
Я думаю, что это излишне, но некоторые другие члены моей команды этого не делают. Я смотрю на это так: если BusinessRule1 дает сбой, он всегда должен возвращать false, не имеет значения, проверен ли он первым или последним.