簡體   English   中英

PHPUnit代碼覆蓋內存限制

[英]PHPUnit code coverage memory limit

我有一個帶有一些功能測試的Symfony2項目。
當我在未啟用代碼覆蓋率的情況下運行測試套件時,沒有問題。 但是,當我嘗試生成代碼覆蓋率時,出現了PHP致命錯誤:

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

我已經為cli和服務器php.ini修改了memory_limit。
我還已經修改了suhosin的memory_limit。

當我在cli中打印phpinfo()時,我得到了這些值:

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

有誰知道可能導致此問題的原因? 有人遇到過這種情況嗎?

看起來它停止在200 MB,所以您要么需要更多地查看配置以允許使用更多的內存,要么在代碼中的某個位置包含include循環。 這件事發生在我的樹枝上,包括幾次

增加您的PHP內存限制(我用1744M為PHP留了一些安全空間)。 在做額外的內存之前,我遇到了同樣的問題。 我更改的下一件事是將外部庫從代碼覆蓋率中排除(作者在其程序包中對其進行了測試,因此我無需在項目中知道它們的代碼覆蓋率)。 這樣我們的項目就可以正確解析並獲得正確的代碼覆蓋率分析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM