2014-01-24 7 views
2

몇 가지 기능 테스트가있는 Symfony2 프로젝트가 있습니다.
코드 커버리지를 사용하지 않고 테스트 스위트를 실행해도 아무런 문제가 없습니다. 하지만 내가 PHP 치명적인 오류가 발생하고있는 코드 커버리지 생성하려고 할 때 : 이미 CLI 및 서버의 php.ini 모두 memory_limit를 수정PHPUnit 코드 커버리지 메모리 제한

Generating code coverage report, this may take a moment. 
PHP Fatal error: Allowed memory size of 209715200 bytes exhausted 
(tried to allocate 79 bytes) in /usr/share/php/PHP/Token/Stream.php on line 205 
PHP Stack trace: 
PHP 1. {main}() /usr/bin/phpunit:0 
PHP 2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:46 
PHP 3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:130 
PHP 4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:192 
PHP 5. PHP_CodeCoverage_Report_HTML->process() /usr/share/php/PHPUnit/TextUI/TestRunner.php:373 
PHP 6. PHP_CodeCoverage->getReport() /usr/share/php/PHP/CodeCoverage/Report/HTML.php:133 
PHP 7. PHP_CodeCoverage_Report_Factory->create() /usr/share/php/PHP/CodeCoverage.php:141 
PHP 8. PHP_CodeCoverage_Report_Factory->addItems() /usr/share/php/PHP/CodeCoverage/Report/Factory.php:76 
PHP 9. PHP_CodeCoverage_Report_Factory->addItems() /usr/share/php/PHP/CodeCoverage/Report/Factory.php:98 
PHP 10. PHP_CodeCoverage_Report_Node_Directory->addFile() /usr/share/php/PHP/CodeCoverage/Report/Factory.php:94 
PHP 11. PHP_CodeCoverage_Report_Node_File->__construct() /usr/share/php/PHP /CodeCoverage/Report/Node/Directory.php:211 
PHP 12. PHP_CodeCoverage_Util::getLinesToBeIgnored() /usr/share/php/PHP/CodeCoverage/Report/Node/File.php:166 
PHP 13. PHP_Token_Stream_CachingFactory::get() /usr/share/php/PHP/CodeCoverage/Util.php:254 
PHP 14. PHP_Token_Stream->__construct() /usr/share/php/PHP/Token/Stream/CachingFactory.php:68 
PHP 15. PHP_Token_Stream->scan() /usr/share/php/PHP/Token/Stream.php:147 

합니다.
나는 suhosin의 memory_limit도 이미 수정했다.

나는이 값을받은 CLI에서은 phpinfo() 인쇄 :

memory_limit => 2048M => 2048M 
suhosin.memory_limit => 2G => 2G 

사람이이 문제를 일으킬 수있는 어떤 아이디어를 가지고 있습니까? 그런 상황에 처한 사람이 있습니까?

+0

얼마나 많은 파일을 커버리지 리포트에 포함시키고 있습니까? https://github.com/sebastianbergmann/php-token-stream/issues/60 – Motin

답변

0

200 메가 바이트에서 멈추는 것처럼 보이므로 더 많은 메모리를 사용하거나 코드 어딘가에 포함 루프를 가질 수 있도록 설정을 자세히 살펴 봐야합니다. 이것은 나뭇 가지가 두어 시간 동안 발생했습니다.

+0

많은 파일이 포함되어있을 때 메모리 관리와 관련하여 php-token-stream과 관련하여 알려진 문제가 있습니다. 내 루프에 대해 이야기하지만, 브라우저에 페이지를 표시합니다. 문제가 없으므로 무한 루프 문제 일 수는 없습니까? – Renrhaf

0

PHP 메모리 제한을 늘립니다 (PHP의 안전 공간을 확보하기 위해 1744M을 사용했습니다). 나는 여분의 기억을하기 전에 같은 문제가 있었다. 필자가 변경 한 다음 것은 외부 라이브러리를 코드 커버리지에서 제외하는 것이 었습니다 (작성자가 패키지에서 테스트 했으므로 프로젝트에서 코드 커버리지를 알 필요가 없습니다). 이로 인해 우리 프로젝트는 올바르게 구문 분석되고 적절한 코드 커버리지 분석을 할 수있게되었습니다.

+0

벤더가 기본적으로 Symfony2의 코드 커버리지 분석에서 제외되었다고 생각합니다. 내 문제는 매우 이상합니다 ... – Renrhaf