覆盖率驱动(如PCOV)在收集数据时,有一个关键配置 pcov.directory(Xdebug也有类似机制)。当这个参数未明确设置时,驱动会自动尝试在项目根目录下寻找 src、lib 或 app 等常见目录进行扫描。Hyperf生成的代理类目录(例如 ./runtime/container/proxy)通常不在此默认扫描范围内,导致覆盖率数据遗漏。
如果不设置,即使在在 phpunit.xml 中配置 source
<source>
<include>
<!-- 需要统计单元测试覆盖率的文件 -->
<directory suffix=".php">./runtime/container/proxy</directory>
<directory suffix=".php">./app</directory>
</include>
<exclude>
<!-- 生产单元测试覆盖率时,需要忽略的文件 -->
<directory suffix=".php">./app/excludeFile</directory>
</exclude>
</source>
设置了,在覆盖率界面看到了目录结构,覆盖率依然会全部为0。覆盖率驱动未扫描,PHPUnit无法分析。
使用xdebug方式
zend_extension=xdebug.so
xdebug.mode=coverage
这一行目前我没有加都能挣:如果使用Xdebug,对应的配置项为 xdebug.coverage.include,可设置为 xdebug.coverage.include="*" 或指定具体路径。
使用pcov方式
extension=pcov.so
pcov.directory=.
写的文章仅供自己参考,仅供自己参考,仅供自己参考,免得太久没有使用忘记了。
浙公网安备 33010602011771号