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