【问题标题】:PHPUnit gives No Code Coverage Driver Is AvailablePHPUnit 给出没有代码覆盖驱动程序可用
【发布时间】:2021-01-30 18:14:59
【问题描述】:

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

我做错了什么?

【问题讨论】:

  • /usr/lib/php/20170718/pcov.so -- 这是针对 PHP v7.2 的(基于20170718 部分),当您尝试在 PHP 7.4 中使用它时乙>。是的 - 只需为您的 PHP 7.4 获取正确版本的 Xdebug 或 PCOV(P.S. 对于 PHP 7.4,API 版本将是 20190902
  • 试试这个解决方案,通过 PECL 为特定 PHP 版本(7.4 而不是当前的 7.2)“切换”/安装扩展:stackoverflow.com/a/54594604/783119
  • @lazyone 谢谢你,为我做一个sudo pecl -d php_suffix=7.4 install pcov 正确安装的pcov。现在 PHPUnit 能够生成覆盖率报告了。

标签: xdebug pcov


【解决方案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: 无法打开共享对象文件: 没有这样的文件或目录)) 在 Unknown on line 0"

【讨论】:

    【解决方案2】:

    我注意到我有文件/usr/lib/php/20170718/pcov.so。所以我将extension=/usr/lib/php/20170718/pcov.so 行添加到我的/etc/php/7.4/cli/php.ini 文件中。

    此文件适用于 PHP 7.2(基于 20170718 部分),而您正尝试在 PHP 7.4 中使用它。

    您需要为您的 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>
    

    【讨论】:

      【解决方案3】:

      你只需要安装xdebug,这样coverage就知道如何运行了。

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

      sudo apt install php7.1-xdebug
      

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

      sudo apt install php7.4-xdebug
      

      【讨论】:

        猜你喜欢
        • 2016-06-19
        • 1970-01-01
        • 2018-03-01
        • 2013-05-07
        • 2016-09-13
        • 2012-05-04
        • 2019-07-22
        • 2018-05-29
        • 2015-02-09
        相关资源
        最近更新 更多