Мой основной вопрос сводится к следующему: при запуске нового проекта я должен начать с написания функционального теста для функции, а затем писать модульные тесты, пытаясь пройти функциональный тест? Или я должен начать с размышления о меньшем компоненте этой функции, а затем написать для нее модульный тест (а затем функциональный тест для этой функции)?
Например, я хочу, чтобы я мог войти в свое веб-приложение. Должен ли я сначала написать функциональный тест, описывающий шаги, которые происходят во время процесса входа (пользователь находится на странице входа, пользователь заполняет обязательные поля, пользователь нажимает кнопку входа и т. Д.)? Или лучше сначала написать модульные тесты, скажем, для правил валидации полей формы? Я делал первое, и теперь я задаюсь вопросом, является ли мой рабочий процесс некорректным и есть ли какой-то лучший подход, которого я не вижу.
Кроме того, у меня есть чувство, что это может быть помечено как «призыв к мнению», но я пытался искать и расспрашивать в другом месте и пока не смог найти четкого ответа. Заранее спасибо за любые ответы.
Ваш первый предложенный подход: написание моих функциональных тестов для общего поведения, затем написание модульных тестов для управления небольшими кусочками функциональности.
Вот почему Этот первый тест описывает новое поведение, которое вы хотите от системы. Когда он проходит, вы можете перейти к следующей функции. Пока это не проходит, вам нужно добавить функциональность. Так что это хорошая дорожная карта. Когда вы добавляете каждый новый бит функциональности, вы сначала пишете неудачный тестовый модульный тест, который проверяет только этот новый бит. Так что это хороший, очень специфический тест; он работает быстро и не зависит от других элементов. Это стимулирует разработку этого следующего бита, и функциональный тест держит вас на пути, записывая только те биты, которые необходимы для новой функциональности. Ваш модульный тест фокусирует ваше внимание на ближайшем вопросе; Ваши предыдущие, проходящие, модульные тесты сообщат вам, когда вы нарушили существующее поведение, а ваш функциональный тест даст вам знать, когда вы закончите с этой функцией.
Других решений пока нет …