Цикл статей по TDD паттернам:


Название: Isolated Test (Изолированный тест)

Определение: Тесты не должны зависеть друг от друга.

Краткое описание: Не стоит писать тесты, порядок которых, зависит от успеха других тестов. Если у нас один сломанный тест — то у нас только одна проблема. Если уже два сломанных теста — у нас две проблемы.


Название: Test List

Определение: Составив список тестов, которые вы хотите реализовать - поможет вам ничего не пропустить.

Краткое описание: Перед тем как начать писать тесты, составьте список всех тестов, которые вы хотели бы реализовать. Однако это не значит написать их в прямом смысле, а всего лишь внести их в список на бумажке. Если вы напишите пачку тестов за раз - вы нарушите принцип Red-Green-Refactor.


Название: Test First

Определение: Пишите тесты до того, как вы напишете код.

Краткое описание: Если писать тесты до кода, это поможет думать больше о дизайне и стать более сфокусированным на задаче. Так же, данный паттерн способствует повышению процента покрытия кода тестами (code coverage).


Название: Assert First

Определение: Начните писать тесты с assert/expect/should проверок (снизу-вверх).

Краткое описание: Такой подход будет сам подсказывать вам, что нужно сделать для того, чтобы тест прошел успешно и поможет вам быть сфокусированным на результате.


Название: Test Data

Определение: Данные для тестов, которые не вводят в заблуждение.

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


Название: Evident Data

Определение: Предпочтите в своих тестах явные данные, нежели вычисляемые.

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