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