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

时间:2011-03-14 21:03:27

标签: php unit-testing phpunit code-coverage clover

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

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

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

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

我注意到与我实施的跟踪代码量以及该方法将处理的令牌数量的相关性。因此,程序可能会耗尽内存。

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

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

1 个答案:

答案 0 :(得分:2)

我们以1GB的速度运行大多数项目的单元测试,但是我们不得不将其提升到2GB以允许代码覆盖。尝试使用

增加memory limit for PHP
ini_set('memory_limit', '1024M');
相关问题