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

fwzugrvs  于 12个月前  发布在  Jenkins
关注(0)|答案(4)|浏览(141)

我目前正在使用Zend Framework和PHPUnit对应用程序进行单元测试。当哈德逊执行PHPUnit shell命令时,在代码覆盖率生成期间的某个时候会达到最大PHP内存限制。我目前总共有41个测试,334个Assert。
通过使用-d memory_limit=768M开关将memory_limit设置提高到768 M,我成功地消除了这个错误;然而,我担心随着复杂性沿着测试/Assert总数的增加,我将没有足够的内存来生成用于代码覆盖率统计的HTML。

**操作系统:**CentOS 5.5
**控制面板:**WHM/cPanel
**CI服务器:**哈德逊

/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字节,已耗尽
在提交我的更改并让哈德逊处理其余部分之前,我使用Windows 7进行开发。在W7中运行相同命令时,内存使用从未超过340 MB。

m2xkgtsf

m2xkgtsf1#

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

5ktev3wc

5ktev3wc2#

你是否启用了xdebug分析,如果是,试着禁用它。我以前遇到过这个问题,它归结为php中的扩展(特别是xdebug profiling和/或Included heirarchy viewer)

eufgjt7s

eufgjt7s3#

从2019年开始,您可以将PCOV驱动程序与PHPUnit一起使用来生成代码覆盖率报告。根据我的经验,它的性能只比运行一个普通的PHPUnit套件差一点点。
请阅读Speed up PHPUnit Code Coverage Analysis,了解比较XPERT、PHPPERT和PCOV的一些好的基准测试。它还提供了如何在PHPUnit 8上启用PCOV的说明。
阅读Setup PHP PCOV for 5 times faster PHPUnit code coverage了解在PHPUnit 7及以下版本上设置PCOV的说明。

ajsxfq5m

ajsxfq5m4#

我在使用PHPUnit v10中的任何代码覆盖率格式时遇到了OOM问题,并通过将“processIsolation”选项设置为true解决了这个问题。也许这也能帮助别人。

相关问题