Laravel8 phpunit测试通过但未生成Code coverage report HTML的问题
Laravel8 phpunit无法生成覆盖率HTML报告解决方案
- 首先确认代码覆盖率驱动已安装并启用
PHPUnit依赖Xdebug或PCOV扩展生成覆盖率报告,运行php -m查看扩展列表中是否存在xdebug或pcov。
若使用Xdebug,需开启覆盖率模式:临时启用可在运行命令前加XDEBUG_MODE=coverage,永久启用可在php.ini中添加xdebug.mode = coverage,修改后重启PHP服务。 - 优先使用项目内的PHPUnit执行命令
不要使用全局安装的phpunit,避免版本不兼容问题,推荐使用Laravel自带的测试命令或者项目vendor目录下的phpunit:
你当前配置文件中已经指定了报告输出路径为# 写法1:使用artisan命令 php artisan test --coverage-html reports/coverage # 写法2:直接调用项目内phpunit XDEBUG_MODE=coverage ./vendor/bin/phpunit --coverage-html reports/coveragereports/coverage,如果不想每次命令加参数,直接运行命令即可,不需要额外加路径参数。 - 检查目录写入权限
提前创建报告输出目录并赋予写入权限:mkdir -p reports/coverage chmod -R 755 reports - 确认PHPUnit版本和配置格式匹配
你当前配置中的<coverage>标签是PHPUnit 9及以上版本的语法,如果项目内PHPUnit版本低于9,配置不会生效:
运行./vendor/bin/phpunit --version查看版本,若为8.x版本,将配置文件中的块替换为 块: <logging> <coverageHtml outputDirectory="reports/coverage" lowUpperBound="50" highLowerBound="90"/> </logging>
内容的提问来源于stack exchange,提问作者Akshay Gireesh
相关产品推荐
相关产品推荐

