Я склонен ставить утверждения самостоятельно, только если они ценны сами по себе. Если я хочу подтверждение самостоятельно, я делаю заказное утверждение:
AssertThatMyObjectMatches(field1, field2, field3, field4, myObject);
Иногда, однако, мне нравится иметь более одного примера в тесте. Я делаю это, когда половина поведения не имеет значения без другой половины.
Assert.True(list.IsEmpty());
list.Add(new Thing());
Assert.False(list.IsEmpty());
Другие, в том числе большая часть сообщества Ruby, имеют другое мнение по этому поводу. Главным образом это связано с сообщением в блоге Дейва Астелса, здесь:
http://www.artima.com/weblogs/viewpost.jsp?thread=35578
Я считаю, что метод «Одно утверждение на тест» очень полезен для таких вещей, как валидация, где важен каждый небольшой аспект. В противном случае я не слишком беспокоюсь об этом.
Что бы ни работало для вас и вашей команды, вероятно, правильный путь. Я склонен делать то, что кажется простым и легко изменяемым, чтобы быть правильным позже, когда у меня есть лучшее представление о том, что правильно. Я также поместил множество комментариев Given / When / Then
на уровне единиц в более сложные примеры и разделил класс, если он стал слишком сложным для понимания.
Причина написания тестов не в том, что вы можете ловить вещи, которые ломаются. Это чтобы помочь людям понять код и изменить его, не нарушая при этом ничего.