Понимание тестирования (BDD). Могу ли я пропустить модульный тест, дублирующий что-то, что уже описано в определенном интеграционном тесте? - PullRequest
2 голосов
/ 17 ноября 2011

Примечание: ранее был похожий вопрос ( BDD и модульное тестирование ), но на него нет точного прямого ответа. Просто ссылка на книгу.

Предположим, мы тестируем страницу профиля. Пользователь отправляет свои данные.

  • Проверка не удалась - мы уведомляем его об этом, объект не обновлен.
  • Проверка пройдена - он перенаправлен на страницу профиля с отправленными данными. Объект обновлен. Круто!

Так что, если я проверил, что валидации работают должным образом во время BDD, мне нужно перепроверить его с помощью Unit Test? Или я могу пропустить это? Что будет правильно делать в этом случае и почему?

Ответы [ 2 ]

6 голосов
/ 17 ноября 2011

Интеграционный тест проверяет правильность работы деталей.

Юнит-тест охватывает правильную функциональность каждой части.

Итак, ответ состоит из двух частей:

  1. Нет, вы не должны пропускать это. Интеграционные тесты проверили вашу валидацию в контексте всей страницы, включая все ее модули. Модуль, который выполняет проверку, должен обязательно иметь модульный тест, который также проверяет это (изолированно, как это делают модульные тесты).
  2. Вы никогда не тестируете одни и те же вещи с помощью интеграционных тестов и модульных тестов. В интеграционном тесте вы проверяли, что страница ведет себя так или иначе с определенными данными. В модульном тесте вы можете даже игнорировать то, что находитесь на странице, если вы тестируете автономный модуль. Даже если этот модуль проверяет некоторые данные и принимает некоторые решения. Вы только проводите модульное тестирование этого процесса проверки и результата этого решения.
3 голосов
/ 17 ноября 2011

Если логика проверки проста, продолжайте и игнорируйте догму TDD. Вы не получите много от "правильных" юнит-тестов.

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

Модульные тесты гораздо меньше страдают от этих проблем, поэтому они могут быть полезны для дополнения интеграционных тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...