Генерация покрытия кода PHPUnit, вызывающая исчерпание памяти - PullRequest
15 голосов
/ 09 октября 2010

В настоящее время я использую Zend Framework совместно с PHPUnit для проведения модульного тестирования приложения. Когда Hudson выполняет команду оболочки PHPUnit, максимальный предел памяти PHP достигается когда-то во время генерации покрытия кода. В настоящее время у меня 41 тест с 334 утверждениями.

Я успешно устранил эту ошибку, подняв значение параметра memory_limit до 768M с помощью переключателя -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.

Ответы [ 2 ]

16 голосов
/ 23 ноября 2010

Сокращая количество файлов, включенных в покрытие кода, а также увеличивая общий предел памяти в PHP, я смог в основном устранить эту ошибку. Весь Zend Framework был включен в покрытие кода, которое очень велико.

1 голос
/ 14 октября 2010

У вас включено профилирование xdebug, если это так, попробуйте отключить его.Я сталкивался с этой проблемой раньше, и она сводилась к расширениям в php (в частности, профилирование xdebug и / или просмотрщик включенного heirarchy)

...