PHPUnit没有可用的代码覆盖率驱动程序

时间:2020-10-16 08:25:10

标签: xdebug pcov

我有一个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问题的全局变量。

我在做什么错了?

3 个答案:

答案 0 :(得分:1)

这与PHPUnit无关。您的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行的“未知”中

答案 1 :(得分:1)

我注意到我有文件/usr/lib/php/20170718/pcov.so。因此,将行extension=/usr/lib/php/20170718/pcov.so添加到了/etc/php/7.4/cli/php.ini文件中。

当您尝试在PHP 7.4 中使用该文件时,该文件适用于 PHP 7.2 (基于20170718部分)。

您需要为您的PHP 7.4获取正确版本的Xdebug(或PCOV)。 (注意:对于PHP 7.4,API版本(以及路径中的正确文件夹)将为20190902

请尝试以下解决方案中的解决方案,以通过PECL为特定的PHP版本(7.4,而不是当前的7.2)切换/安装扩展程序:https://stackoverflow.com/a/54594604/783119

sudo pecl -d php_suffix=7.4 install <package-name>

答案 2 :(得分:0)

你只需要安装xdebug,覆盖就知道如何运行了。

例如,对于 PHP 7.1,就是这个包:

sudo apt install php7.1-xdebug

今天刚刚针对我的场景修复了它。在您的情况下,只需将 PHP 版本更改为:

sudo apt install php7.4-xdebug