Генерация покрытия кода Phpunit, вызывая истощение памяти
-
29-09-2019 - |
Вопрос
В настоящее время я использую Zend Framework в сочетании с PhpUnit для проведения единичных тестирования в приложении. Когда Hudson выполняет команду Phpunit Shell, максимальный предел памяти PHP достигается где -то во время генерации покрытия кода. В настоящее время у меня есть 41 тест с 334 утверждениями.
Я успешно устранил эту ошибку, подняв настройку Memore_Limit до 768 м, используя -d memory_limit=768M
выключатель; Тем не менее, я обеспокоен тем, что по мере того, как сложность увеличивается вместе с общим количеством тестов/утверждений, у меня не будет достаточно памяти для создания HTML для статистики покрытия кода.
ОПЕРАЦИОННЫЕ СИСТЕМЫ: Centos 5.5
Панель управления: WHM/CPanel
CI -сервер: Гудзон
/usr/local/bin/phpunit
--verbose
-d memory_limit=512M
--log-junit ../../build/logs/phpunit.xml
--coverage-clover ../../build/logs/coverage/clover.xml
--coverage-html ../../build/logs/coverage-html/
Фатальная ошибка: разрешенный размер памяти 536870912 байтов
Прежде чем совершать мои изменения и позволить Хадсону справиться с остальными, я использую Windows 7 для разработки. Использование памяти никогда не превышало 340 МБ при выполнении одной и той же команды в W7.
Решение
Сокращая количество файлов, включенных в покрытие кода, а также увеличивая общий предел памяти в PHP, я смог в основном убить эту ошибку. Вся структура Zend была включена в покрытие кода, что очень большое.
Другие советы
У вас включено профилирование XDEBUG, если это так, попробуйте отключить его. Я сталкивался с этой проблемой раньше, и она сводилась к расширениям в PHP (в частности, xdebug Profiling и/или включено в Heirarchy Viewer)