Несколько, утверждает плохо в модульном тесте? Даже если объединение в цепочку?

Есть ли что-то не так с проверкой такого количества вещей в этом модульном тесте?:

ActualModel = ActualResult.AssertViewRendered()        // check 1
                          .ForView("Index")            // check 2
                          .WithViewData<List<Page>>(); // check 3

CollectionAssert.AreEqual(Expected, ActualModel);      // check 4

Основные цели этого теста состоят в том, чтобы проверить, что правильное представление возвращается (проверьте 2), и это содержит правильные данные (проверьте 4).

Я получил бы что-нибудь путем разделения этого на несколько тестов? Я - все о том, чтобы делать правильно вещи, но я не собираюсь разделять вещи, если оно не имеет практического значения.

Я довольно плохо знаком с поблочным тестированием, так быть нежным.

40
задан Michael Haren 12 March 2010 в 04:03
поделиться

3 ответа

Как отмечали другие, лучше придерживаться одного утверждения в каждом тесте, чтобы избежать потери информации - если первое утверждение не сработает, вы этого не сделаете. Не знаю, потерпят ли неудачу и более поздние. Вы должны решить проблему с меньшим количеством информации - что может (возможно, будет) быть сложнее.

Очень хороший справочник Роя Ошерова Искусство модульного тестирования - если вы хотите начать прямо с модульного тестирования, вы можете сделать намного хуже, чем начать здесь.

30
ответ дан 27 November 2019 в 01:46
поделиться

Пока каждое утверждение имеет уникальное и идентифицирующее сообщение об ошибке, вы должны быть в порядке и избегать любых проблем с рулеткой утверждений, потому что будет несложно определить, какой тест не прошел. Используй здравый смысл.

8
ответ дан 27 November 2019 в 01:46
поделиться

Лучше всего придерживаться только одного утверждения в каждом тесте, чтобы избежать Assertion Roulette.

Если вам нужно настроить один и тот же сценарий для проверки нескольких условий, основанных на одинаковых предпосылках, лучше извлечь код настройки в общий вспомогательный метод, а затем написать несколько тестов, вызывающих этот вспомогательный метод.

Это гарантирует, что каждый тест будет тестировать только одну вещь.

Как всегда, из этого правила есть исключения, но поскольку вы новичок в модульном тестировании, я бы рекомендовал вам придерживаться правила одно утверждение на модульный тест, пока вы не научитесь понимать, когда можно отклоняться от него.

2
ответ дан 27 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: