Покрытие кода Codeception мучительно медленное

Я использую codeception (с кодовым покрытием), чтобы проверить покрытие кода приложения, которое я написал с использованием фреймворка Yii2. Поскольку при стандартной установке php на моем Mac xcode не включен, я активировал его, добавив строку zend_module в свой php.ini. Покрытие кода, кажется, работает сейчас, но мучительно медленно. Да, я знаю, что активированный xdebug и генерация покрытия занимает некоторое время, но я думаю, что это ненормально: даже простой модульный тест, который проверяет только инициализацию объекта, занимает до 15 минут.

Я не думаю, что это проблема с процессором или оперативной памятью, а не с конфигурацией.

Я начинаю покрытие кода с:

codeception run unit --coverage-html

Что я обнаружил: первый тест выполняется всегда быстро, независимо от того, насколько он велик. Второй тест намного медленнее (независимо от того, какой это тест), а третий медленнее. Как я могу отследить это? Я хочу обнаружить проблему.

Еще раз: я знаю, что покрытие кода замедляет тесты, но 15 минут для простого теста — это ненормально.

// РЕДАКТИРОВАТЬ: тест, который выполняется прибл. 15 минут, занимает 1 секунду без включенного покрытия кода.


person palima    schedule 31.08.2014    source источник
comment
То же дерьмо :( Они взяли рабочий код phpunit и обернули его своим... ну, мы можем назвать это кодом   -  person whitediver    schedule 12.05.2016
comment
Здравствуйте, я получаю результат Классы: (0/0) Методы: (0/0) Строки: (0/0) . Я использую ту же команду, мои тестовые примеры работают правильно, но не показывают покрытие кода. Что не так с моим кодом   -  person Anway Kulkarni    schedule 31.08.2016
comment
Вы уверены, что это не проблема xdebug? возможно, вы установили точку останова или что-то, что замедляет процесс. попробуйте отключить xdebug или другие программы, замедляющие процесс, и повторите попытку.   -  person TheDevWay    schedule 05.11.2017
comment
Можно ли отладить процесс?   -  person Gavindra Kalikapersaud    schedule 18.02.2018


Ответы (1)


Вам нужно включить xdebug, чтобы получить покрытие (что вы сейчас и сделали!), поэтому его отключение не поможет.

При выполнении таких аналитических проверок возникают огромные накладные расходы, например, мое приложение Laravel выполняет ~ 300 тестов и ~ 1000 утверждений. При получении отчетов о покрытии запуск занимает около 5 минут, но с отключенным xdebug и отсутствием покрытия это около 15 секунд.

Возможно, вы сможете повысить производительность, настроив php.ini? Возможно, проверьте, сколько памяти вы разрешаете потреблять php. Я думаю, что по умолчанию это 128 МБ, что может остановить работу памяти / диска?

Если ваше приложение сложное, возможно, включите профилирование в xdebug и проанализируйте результаты в PHPStorm и посмотрите, что замедляет работу.

person OnIIcE    schedule 12.04.2018