PHPUnit - ошибка PHP_Token_Stream при клеверном покрытии - PullRequest
3 голосов
/ 15 марта 2011

Я использую PHPUnit 3.5.10, и у меня возникла проблема при попытке создать xml-отчеты для покрытия клевера.

Экспорт с покрытием-html работает нормально.Кроме того, если я исключу достаточное количество файлов из отчета о покрытии, он сгенерирует файл clover.xml.Однако, когда я запускаю свой набор тестов, я получаю сообщение «Запись данных покрытия кода в файл XML, это может занять некоторое время», и затем выполнение молча завершается неудачей.Каждый 1 из 25 раз я получаю сообщение «Ошибка сегментации».

Изначально я отследил эту проблему до функции PHP_CodeCoverage :: getSummary (), однако, когда я ограничил покрытие кода белым списком, программаЭта ошибка была исправлена.

Далее, отчеты о покрытии кода, похоже, перестали работать в функции PHP_Token_Stream :: scan ().Фактически, после обработки кумулятивного числа из приблизительно 31 тыс. Токенов метод просто останавливается без сообщения об ошибке.

Я заметил корреляцию с количеством введенного кода трассировки и количеством токенов, которые я установил.метод обработает.Таким образом, может показаться, что программе не хватает памяти.

Я создал тест для загрузки нескольких моих файлов кода и проверки PHP_Token_Stream, загружая файлы один за другим.Похоже, что это работает так, как ожидалось, и не воспроизводит ошибку в том виде, в каком она появляется в контексте набора тестов.

Есть предложения о том, как выводить мои отчеты о покрытии клевером?

1 Ответ

2 голосов
/ 15 марта 2011

Мы выполняем модульные тесты большинства наших проектов с 1 ГБ, но нам пришлось увеличить до 2 ГБ, чтобы обеспечить покрытие кода. Попробуйте увеличить предел памяти для PHP , используя

ini_set('memory_limit', '1024M');
...