В настоящее время я пишу некоторые модульные тесты для бизнес-логического класса, который включает в себя процедуры проверки. Например:
public User CreateUser(string username, string password, UserDetails details)
{
ValidateUserDetails(details);
ValidateUsername(username);
ValidatePassword(password);
// create and return user
}
Должно ли мое тестовое устройство содержать тесты на все возможные ошибки проверки, которые могут возникать в методах Validate *, или лучше оставить это для отдельного набора тестов? Или, возможно, логика проверки должна быть каким-то образом реорганизована?
Мое рассуждение состоит в том, что если я решит протестировать все ошибки проверки, которые могут возникнуть в CreateUser, тестовое устройство станет довольно раздутым. И большинство методов проверки используются из более чем одного места...
Любые большие шаблоны или предложения в этом случае?