Почему тесты выполняются по одному, но возникают ошибки в некоторых тестах при выполнении их вместе?

Имеем фреймворк Yii2, со структурой по типу yii2-advanced, 2 типа тестов юнит и функциональные,также и там и там используются фикстуры.
При запуске тестов по одному, нет ошибок, при запуске всех через codecept run без дополнительных параметров, вываливаются ошибки в некоторых тестах. При запуске с параметром -vvv, всё идет к тому что есть проблемы с загрузкой фикстур. В сети есть информация что с фреймворками в частности с функциональными тестами есть проблемы с запуском всех тестов по причине того что выполнение идет в одном процессе, и тесты между собой могут конфликтовать.
Каким образом решить данную проблему, заставив выполнять тесты все вместе?

Codeception PHP Testing Framework v2.4.0
Powered by PHPUnit 7.1.4 by Sebastian Bergmann and contributors.
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
Maksclub
@Maksclub
maksfedorov.ru
Потому что глобальные состояния.
В объекте состояние не меняется между тестами

Как лечить.
  • Set Up в методах (например метод _before() или кастомные методы, на которые ссылается аннотация @before) помогут вам привести тест к исходному состоянию -- обнуляйте артефакты прошлых тестов.
  • Пишите изначально код, который не завязан на глобальное состояние

При запуске с параметром -vvv, всё идет к тому что есть проблемы с загрузкой фикстур.

Если из-за них, то возможно легко излечить -- делайте cleanup перед каждым тестом и populate, то есть предзагрузка фикстур заново
https://codeception.com/docs/modules/Db#Populator
Или каждому тесту создавайте свой уникальный набор фикстур (я выбрал этот вариант), он быстрый, немного гемморный
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы