当使用 codecoverage 执行 PHPUnit 时,覆盖率生成只是停止而没有任何错误,并且不会生成报告。
该问题是由一个文件中的致命错误引起的,但是很难在没有任何错误出现的情况下找到错误所在。
我已经确认display_errors
开启,并且我error_reporting
在 php.ini 中设置为 -1
经过从覆盖范围中排除文件的大量测试后,我发现文件有误,以及错误是什么(类没有实现继承的抽象方法),但如果我遇到实际错误,这可能会更快。
当使用 codecoverage 执行 PHPUnit 时,覆盖率生成只是停止而没有任何错误,并且不会生成报告。
该问题是由一个文件中的致命错误引起的,但是很难在没有任何错误出现的情况下找到错误所在。
我已经确认display_errors
开启,并且我error_reporting
在 php.ini 中设置为 -1
经过从覆盖范围中排除文件的大量测试后,我发现文件有误,以及错误是什么(类没有实现继承的抽象方法),但如果我遇到实际错误,这可能会更快。
问题出在正在使用的 PHPUnit 配置中。
我已经设置了这样的错误报告:
<php>
<ini name="error_reporting" value="E_ALL & ~E_STRICT" />
</php>
我认为这应该可行,但您似乎只能提供常量 ( E_ALL
) 或文字值,而不是这样的表达式。此配置会将 error_reporting 设置为'E_ALL & ~E_STRICT'
,而不是正确的数值,从而使所有错误都被忽略。
我通过在 phpunit 引导文件中设置 error_reporting 解决了这个问题。