Путаница: оставьте функциональные тесты, которые покрывают ту же землю, что и модульные тесты?

Я изо всех сил пытаюсь понять, что следует исключить из функциональных тестов (в моем случае, используя Rails, но я думаю, что структура, вероятно, не имеет значения).

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

Или это впечатление неверно для начала?

Я посмотрел а также this но я все еще в растерянности.

Ответ 1

Функциональный тест: выполняет ли он маркетинг/юзабилити/клиенты, подписанные для? т.е. если ваша спецификация указывает, что текстовое поле ZIP допускает только действительные почтовые индексы США, тогда вам, вероятно, следует проверить это в функциональном тесте.

Unit Test: Выполняет ли это то, что ожидает разработчик. В этих тестах вы должны использовать тестовые двойники для выделения кода из зависимостей.

Итак, да, будет перекрытие рода.

Ответ 2

I для "всплесков" через функциональность с функциональными тестами и не беспокоиться о том, чтобы покрыть все и вместо этого сосредоточиться на модульных тестах.

Причины:

  • функциональные тесты медленны
  • функциональные тесты трудно писать и поддерживать
  • функциональные тесты могут захватывать только два дополнительных элемента, кроме ваших модульных тестов:
    • Ошибки GUI
    • Несоответствия между уровнями

В общем, я обнаружил, что он не окупается, чтобы покрыть все дважды.