PHPUnit 代码覆盖率生成导致内存耗尽

2022-08-31 01:09:35

我目前正在将Zend Framework与PHPUnit结合使用,以对应用程序进行单元测试。当 Hudson 执行 PHPUnit shell 命令时,在代码覆盖率生成期间的某个时候达到最大 PHP 内存限制。我目前共有41个测试,有334个断言。

我通过使用开关将memory_limit设置提高到768M,成功地消除了此错误;但是,我担心随着复杂性随着测试/断言总数的增加而增加,我将没有足够的内存来生成用于代码覆盖率统计信息的HTML。-d memory_limit=768M

操作系统:CentOS 5.5
控制面板: WHM/cPanel
CI Server: Hudson

/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 字节已耗尽

在提交我的更改并让 Hudson 处理其余部分之前,我使用 Windows 7 进行开发。在 W7 中运行相同命令时,内存使用量从未超过 340MB。


答案 1

通过减少代码覆盖率中包含的文件数量,以及增加PHP中的整体内存限制,我基本上能够杀死这个错误。整个Zend框架都包含在代码覆盖率中,这非常大。


答案 2

您是否启用了 xdebug 分析,如果已启用,请尝试禁用它。我以前遇到过这个问题,它归结为php中的扩展(特别是xdebug分析和/或包含继承查看器)


推荐