PhpUnit с проблемой памяти Zend Framework - PullRequest
2 голосов
/ 18 ноября 2010

Я только начал использовать PHP Unit с Zend Framework, и у меня проблема с memory_limit. В настоящее время ограничение памяти установлено на 32M, и при запуске всех тестов я получаю фатальную ошибку:

Допустимый объем памяти 33554432 байта исчерпан.

В настоящее время у меня есть: 7 файлов, 125 тестов, 332 подтверждения. Я проверяю только контроллеры. Я использую @dataProvider для некоторых тестов с 1–5 наборами данных (сначала я считывал их из файла, я пытался поместить данные непосредственно в файлы тестов, но он все еще достигает предела памяти)

Итак, мой вопрос: каков ваш обычный лимит памяти для тестирования на основе phpunit? Куда мне обратиться, чтобы улучшить тестирование памяти? Любой совет будет отличным.

Спасибо, Gabriel

Ответы [ 5 ]

3 голосов
/ 18 ноября 2010

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

phpunit --process-isolation

или добавьте его в конфигурацию phpunit.xml:

<phpunit bootstrap="./application/bootstrap.php"
    processIsolation="true">
1 голос
/ 07 декабря 2010

Другое решение - отключить резервное копирование и восстановление глобального состояния после каждого теста. PHPUnit делает это по умолчанию, это уменьшило использование памяти нашего Test Suite с 1000 МБ до 90 МБ ... (да, у нас большое толстое приложение)

В файле конфигурации phpunit есть настройка backupGlobals.

https://phpunit.readthedocs.io/en/7.4/configuration.html

600 тестов,? Утверждения, 80 000 строк кода, около 1200 файлов без библиотек

0 голосов
/ 28 января 2017

Будьте осторожны при выполнении phpunit --process-isolation, потому что каждый тест выполняется в отдельном процессе PHP, поэтому тестирование будет намного медленнееВместо этого вы можете просто увеличить memory_limit в вашем php.ini

0 голосов
/ 03 июня 2016

Для старого приложения у меня была проблема увеличения памяти после каждого теста, что приводило к использованию памяти более 1 ГБ.Чтобы решить эту проблему, я пробовал много разных вещей.Лучше всего было:

  1. очистить переменные ваших тестовых классов в tearDown ().
  2. идентифицировать ресурсы, загруженные в bootstrap (), ресурсы класса и ресурсы плагина.Одна из них была причиной увеличения памяти.Поиск кода и его исправление снизили его использование в 10 раз.
  3. Включите сборку мусора и вызовите gc_collect_cycles () в tearDown ().
0 голосов
/ 18 ноября 2010

Я запускаю PHP 5.3.3 с настройкой памяти по умолчанию (128M), и у меня никогда не было проблем с модульным тестированием приложений на Zend Framework.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...