Я нахожу в любой ситуации, подобной этой, это может помочь понять, что то, что вы делаете, на самом деле не тестирует.Вы предоставляете примеры того, как / почему использовать класс, и некоторые описания его поведения.Если вам нужно более одного примера для привязки ценного поведения, я думаю, что можно включить оба.
Так, например, если бы я описывал поведение списка, у меня было бы два примера для описания "Список должен сказать мне, если он пуст ".Ни пустой пример, ни полный пример сами по себе не являются ценными.
С другой стороны, если у вас есть ситуация по умолчанию, в которой что-то является допустимым, за которым следует ряд исключительных случаев, эта "допустимая" ситуациянезависимо цененПозже могут возникнуть другие ситуации, например:
- должно быть недопустимым для не алфавитно-цифровых символов
- должно быть недопустимым для уже занятых имен
- должно быть недопустимымтолько для чисел
- должно быть действительным для букв с акцентом
и т. д.
В этом случае ваше поведение имеет два примера по совпадению, а не потому, что они образуют двастороны ценного аспекта поведения.Действительное поведение само по себе ценно.Таким образом, у меня был бы один пример на тест в этом случае, но один аспект поведения на тест в целом.
Это может относиться и к другому, не булевому поведению.Например, если я пишу программное обеспечение для банкомата, я бы хотел предоставить как наличные, так и дебетовать счет.Ни одно поведение не является ценным без другого.
«Одно утверждение на тест» - хорошее правило.Я нахожу, что это может быть чрезмерно использовано, и иногда вместо этого есть случай «один аспект поведения на тест».Это не один из тех случаев, но я подумал, что стоит упомянуть в любом случае.