Что такое фикстуры?
Автоматические тесты необходимо выполнять неоднократно. Мы хотели бы выполнятьтесты в некоторых известных состояниях для гарантии повторяемости процесса
тестирования. Эти состояния называются фикстуры. Например, для тестирования
функции создания записи в приложении блога, каждый раз, когда мы выполняем
тесты, таблицы, хранящие соответствующие данные о записях (например, таблицы
Post, Comment), должны быть восстановлены к некоторому фиксированому
состоянию.
Данное определение взято из документации фреймворка Yii. Я с ним полностью согласен и считаю что от смены языка и смены фреймворка данное определение не изменится.
Добро?
Сначала кратко расскажу о плюсах использования фикстур:
- Всегда есть возможность откатить систему к идеальному состоянию
- Возможность хранить и использовать большой объем тестовых данных
- Ожидаемое поведение тестов на наборе данных
Зло?
Теперь о минусах:
- Невозможно запускать тесты в параллельном режиме так как могут возникать локи в базе данных при накатывании фикстур
- При огромном количестве фикстур их поддержка может занимать продолжительное время
- При сильно связанной базе может иногда проблематично накатить ограниченный набор фикстур( приходится накатывать их все, а это занимает продолжительное время)
Выводы
Работа с фикстурами в тестах всегда оставляет двоякое впечатление. До определенного предела они помогают, но когда их становится слишком много и тесты начинают сильно на них завязываться, фикстуры начинают мешать.
Перед использованием фикстур в ваших авто-тестах стоит неоднократно подумать.