首页 文章

PHPUnit - 三叶草覆盖率上的PHP_Token_Stream错误

提问于
浏览
3

我正在使用PHPUnit 3.5.10,并且在尝试为clover-coverage生成xml报告时遇到问题 .

使用coverage-html导出工作正常 . 此外,如果我从coverage报告中排除了足够的文件,它将生成clover.xml文件 . 但是,当我运行我的测试套件时,我收到消息“将代码覆盖数据写入XML文件,这可能需要一些时间 . ”,然后执行失败 . 25次中的每1次我将收到“分段错误”消息 .

最初,我将此问题追溯到PHP_CodeCoverage :: getSummary()函数,但是当我使用白名单限制代码覆盖率时,程序已经过了这个错误 .

接下来,代码覆盖率报告似乎在PHP_Token_Stream :: scan()函数中超时 . 实际上,在处理了大约31k令牌的累积之后,该方法简单地停止而没有错误消息 .

我注意到了我所设置的跟踪代码量以及该方法将处理的令牌数量的相关性 . 所以看起来程序可能会耗尽内存 .

我创建了一个测试来加载一堆我的代码文件,并通过一个接一个地加载文件来测试PHP_Token_Stream . 这似乎按预期运行,并且不会复制出现在测试套件上下文中的错误 .

有关如何输出我的三叶草覆盖率报告的任何建议?

1 回答

  • 2

    我们以1GB运行大多数项目的单元测试,但是我们不得不提高2GB以允许代码覆盖 . 尝试使用增加memory limit for PHP

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

相关问题