PHPUnit 代码覆盖率停止而不报告任何错误


PHPUnit codecoverage halts without reporting any error

当使用代码覆盖率执行 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来解决此问题。