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

发布于 2024-10-22 02:13:50 字数 582 浏览 0 评论 0原文

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

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

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

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

我注意到我放置的跟踪代码数量与该方法将处理的令牌数量之间存在相关性。因此,该程序可能会出现内存不足的情况。

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

关于如何输出我的三叶草覆盖率报告有什么建议吗?

I am using PHPUnit 3.5.10, and having a problem trying to generate xml reports for clover-coverage.

Exporting with coverage-html works fine. Also, if I exclude enough files from the coverage report it will generate the clover.xml file. However, when I run my test suite, I get the message "Writing code coverage data to XML file, this may take a moment.", and then the execution fails silently. Every 1 of 25 times I will get a "Segmentation Fault" message.

Initially, I traced this problem to the PHP_CodeCoverage::getSummary() function, however when I restricted the code coverage with a whitelist, the program got past this error.

Next, the code coverage reports seem to time out in the PHP_Token_Stream::scan() function. Effectively, after a cumulative of about 31k tokens have been processed, the method simply halts with no error message.

I have noticed a correlation to the amount of tracing code I put in place, and the number of tokens that the method will process. So it would appear the program may be running out of memory.

I have created a test to load in a bunch of my code files and test PHP_Token_Stream by loading a the files, one after another. This seems to function as expected, and does not replicate the error as it appears within the context of the test suite.

Any suggestions on how to output my clover-coverage reports?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫南 2024-10-29 02:13:50

我们使用 1GB 运行大多数项目的单元测试,但我们必须将其提高到 2GB 以允许代码覆盖。尝试增加 PHP 的内存限制

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

We run most of our projects' unit tests with 1GB, but one we had to kick up to 2GB to allow for code coverage. Try increasing the memory limit for PHP using

ini_set('memory_limit', '1024M');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文