PHPUnit 没有提供可用的代码覆盖驱动程序
PHPUnit gives No Code Coverage Driver Is Available
我有一个 laravel 项目,我试图 运行 phpunit
给我一个覆盖率报告。我 运行 命令 vendor/bin/phpunit --coverage-html storage/test-output-data/coverage-html
它给出了输出:
PHPUnit 8.5.8 by Sebastian Bergmann and contributors.
Error: No code coverage driver is available
我试图通过 sudo pecl install pcov
来解决这个问题,但是 运行 phpunit 仍然给出了上面同样的错误。
我注意到我有文件 /usr/lib/php/20170718/pcov.so
。所以我将行 extension=/usr/lib/php/20170718/pcov.so
添加到我的 /etc/php/7.4/cli/php.ini
文件中。但是当我输入 php -v
时,我得到这个错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20170718/pcov.so' (tried: /usr/lib/php/20170718/pcov.so (/usr/lib/php/20170718/pcov.so: undefined symbol: _zval_ptr_dtor), /usr/lib/php/20190902//usr/lib/php/20170718/pcov.so.so (/usr/lib/php/20190902//usr/lib/php/20170718/pcov.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.4.11 (cli) (built: Oct 10 2020 19:44:50) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies
我还有一个名为 /usr/lib/php/20190902
的文件夹,但它没有 pcov.so
文件。
我也试过 sudo pecl install xdebug
,但我 运行 遇到了与上面类似的错误,其中 phpunit 说没有驱动程序,输入 php -v
说缺少一些全局变量,类似于pcov 问题。
我做错了什么?
这与PHP单位无关。您的 PHP 环境有问题:“PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php/20170718/pcov.so'(已尝试:/usr/lib/php/20170718/pcov .so (/usr/lib/php/20170718/pcov.so: 未定义符号: _zval_ptr_dtor), /usr/lib/php/20190902//usr/lib/php/20170718/pcov.so.so (/usr/lib/php/20190902//usr/lib/php/20170718/pcov .so.so: 无法打开共享对象文件: 没有这样的文件或目录)) 在未知行 0"
I noticed that I have the file /usr/lib/php/20170718/pcov.so
. So I added the line extension=/usr/lib/php/20170718/pcov.so
to my /etc/php/7.4/cli/php.ini
file.
此文件适用于 PHP 7.2(基于 20170718
部分),而您正试图在 PHP 7.4.
您需要为 PHP 7.4 获取正确版本的 Xdebug(或 PCOV)。 (注意:对于 PHP 7.4,API 版本(以及路径中的正确文件夹)将是 20190902
。)
从以下答案尝试此解决方案,通过 PECL 为特定 PHP 版本(7.4 而不是当前的 7.2)切换/安装扩展:
sudo pecl -d php_suffix=7.4 install <package-name>
你只需要安装xdebug,覆盖就知道如何运行。
例如,对于 PHP 7.1,就是这个包:
sudo apt install php7.1-xdebug
今天刚刚针对我的场景修复了它。在您的情况下,只需将 PHP 版本更改为:
sudo apt install php7.4-xdebug
我有一个 laravel 项目,我试图 运行 phpunit
给我一个覆盖率报告。我 运行 命令 vendor/bin/phpunit --coverage-html storage/test-output-data/coverage-html
它给出了输出:
PHPUnit 8.5.8 by Sebastian Bergmann and contributors.
Error: No code coverage driver is available
我试图通过 sudo pecl install pcov
来解决这个问题,但是 运行 phpunit 仍然给出了上面同样的错误。
我注意到我有文件 /usr/lib/php/20170718/pcov.so
。所以我将行 extension=/usr/lib/php/20170718/pcov.so
添加到我的 /etc/php/7.4/cli/php.ini
文件中。但是当我输入 php -v
时,我得到这个错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/20170718/pcov.so' (tried: /usr/lib/php/20170718/pcov.so (/usr/lib/php/20170718/pcov.so: undefined symbol: _zval_ptr_dtor), /usr/lib/php/20190902//usr/lib/php/20170718/pcov.so.so (/usr/lib/php/20190902//usr/lib/php/20170718/pcov.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.4.11 (cli) (built: Oct 10 2020 19:44:50) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies
我还有一个名为 /usr/lib/php/20190902
的文件夹,但它没有 pcov.so
文件。
我也试过 sudo pecl install xdebug
,但我 运行 遇到了与上面类似的错误,其中 phpunit 说没有驱动程序,输入 php -v
说缺少一些全局变量,类似于pcov 问题。
我做错了什么?
这与PHP单位无关。您的 PHP 环境有问题:“PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php/20170718/pcov.so'(已尝试:/usr/lib/php/20170718/pcov .so (/usr/lib/php/20170718/pcov.so: 未定义符号: _zval_ptr_dtor), /usr/lib/php/20190902//usr/lib/php/20170718/pcov.so.so (/usr/lib/php/20190902//usr/lib/php/20170718/pcov .so.so: 无法打开共享对象文件: 没有这样的文件或目录)) 在未知行 0"
I noticed that I have the file
/usr/lib/php/20170718/pcov.so
. So I added the lineextension=/usr/lib/php/20170718/pcov.so
to my/etc/php/7.4/cli/php.ini
file.
此文件适用于 PHP 7.2(基于 20170718
部分),而您正试图在 PHP 7.4.
您需要为 PHP 7.4 获取正确版本的 Xdebug(或 PCOV)。 (注意:对于 PHP 7.4,API 版本(以及路径中的正确文件夹)将是 20190902
。)
从以下答案尝试此解决方案,通过 PECL 为特定 PHP 版本(7.4 而不是当前的 7.2)切换/安装扩展:
sudo pecl -d php_suffix=7.4 install <package-name>
你只需要安装xdebug,覆盖就知道如何运行。
例如,对于 PHP 7.1,就是这个包:
sudo apt install php7.1-xdebug
今天刚刚针对我的场景修复了它。在您的情况下,只需将 PHP 版本更改为:
sudo apt install php7.4-xdebug