PHP 单元。错误:没有代码覆盖驱动程序可用。 (安装了xdebug)
Posted
技术标签:
【中文标题】PHP 单元。错误:没有代码覆盖驱动程序可用。 (安装了xdebug)【英文标题】:PHPUnit. Error: No code coverage driver is available. (having xdebug installed) 【发布时间】:2016-09-13 05:47:57 【问题描述】:有一个类似问题的答案Laravel 5: phpUnit and no code coverage driver available 有效,但我安装了 xdebug。
(如果这个问题我用的是:windows7、netbeans8.1、php7、wamp3)
在 Netbeans 中显示代码覆盖率会导致:
错误:没有代码覆盖驱动程序可用
, 输出如下:
"C:\wamp\www\treningPHPUnitSymfony2.8\bin\phpunit.bat" "--colors" "--log-junit" "C:\Users\chiny\AppData\Local\Temp\nb-phpunit-log.xml" “--覆盖三叶草” “C:\Users\chiny\AppData\Local\Temp\nb-phpunit-coverage.xml” "C:\Program Files\NetBeans 8.1\php\phpunit\NetBeansSuite.php" "--" “--run=C:\wamp\www\treningPHPUnitSymfony2.8\src\TreningBundle\Tests\Controller\RabarbarControllerTest.php” Sebastian Bergmann 和贡献者的 PHPUnit 5.3.4。
错误:没有代码覆盖驱动程序可用
.II 3 / 3 (100%)
时间:1.13 秒,内存:4.00MB
好的,但是不完整、跳过或有风险的测试!测试:3,断言:1, 不完整:2. 完成。](url)
xdebug 配置(C:\wamp\bin\apache\apache2.4.17\bin\php.ini):
[xdebug]
zend_extension ="C:/wamp/bin/php/php7.0.1/zend_ext/php_xdebug-2.4.0rc3-7.0-vc14.dll"
xdebug.remote_enable = off
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = Off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir ="C:/wamp/tmp"
xdebug.show_local_vars=0
加载的扩展
(我在同一个 Windows 分区中有 netbeans 和项目目录)
【问题讨论】:
php.exe -v
告诉你什么?是否启用了 xdebug?
C:\Windows\System32>php.exe -v PHP 7.0.1 (cli) (build: Dec 16 2015 13:36:30) (ZTS) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0,版权所有 (c) 1998-2015 Zend Technologies
xdebug 如主帖最后一个打印屏幕所示在列表中
xdebug 在 CLI 中未启用。启用它,它应该可以工作。
谢谢,我会用谷歌搜索的。我认为如果扩展名在该列表中,我表示它已启用。
【参考方案1】:
在大多数 Apache/PHP 安装中有 2 个php.ini
文件,肯定在 WAMPServer 中
要修改 Apache 中 PHP 使用的正确 php.ini
,请使用菜单
wampmanager->PHP->php.ini
但是对于 PHP CLI 使用的 php.ini
文件,您必须手动编辑
\wamp\bin\php\phpversion\php.ini
如果在 CLI 中配置了 XDEBUG,php -v
的结果应该如下所示
php -v
PHP 7.0.6 (cli) (built: Apr 27 2016 14:00:40) ( ZTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans
注意
当前的 WAMPServer 3 是3.0.4
ADDON 升级可以在 SourceForge 上找到
最新的 ADDON PHP 版本是 PHP7.0.6 也可以在 SourceForge 上获得
请参阅The WampServer Forum 以了解最新版本的 PHP / mysql / Apache ADDONS for WAMPServer 3
还有:
您可能会发现您必须在php.ini
中添加tweek the XDEBUG config parameters 才能满足您的特定需求
【讨论】:
没错。php -v
的结果现在显示 xdebug
在 php 目录中编辑 php.ini 后,没有更多的 Error: No code coverage driver is available
而我有了新的 Error:No whitelist configured, no code coverage will be generated
,但我认为这是一个进步,也是新谷歌搜索和另一个主题的问题。感谢所有提示!
查看 XDEBUG 文档,特别是 xdebug.coverage_enable
【参考方案2】:
我在新安装 PHP 7.1 时遇到了这个问题,这就是我为使其正常工作所做的工作
$ brew install php71-xdebug
$ php -i | grep xdebug
// 检查是否安装了 xdebug
$ phpunit
之后它起作用了。此外,这就是我的 phpunit.xml 看起来我需要将整个结构列入白名单的方式,因为它是共享组件
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false">
<testsuites>
<testsuite name="Tests">
<directory suffix=".php">./Tests/</directory>
</testsuite>
</testsuites>
<logging>
<log type="coverage-clover" target="./build/logs/clover.xml"/>
</logging>
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory>./</directory>
</whitelist>
</filter>
</phpunit>
此解决方案仅适用于 MacOS,如果您想使其在 Linux 上运行,则需要使用适用的包管理器,如 apt-get 等。
【讨论】:
是的,在 linux 上,您需要在 debian 系统上使用其他包管理器,例如 apt-get 如果 Fedora GNU/Linux 您可以使用sudo dnf install php-xdebug
,它将安装您拥有的任何版本的 php 的软件包。【参考方案3】:
在 Debian 上遇到同样的问题:
错误:没有代码覆盖驱动程序可用
我通过安装 php-xdebug 修复了它:sudo apt install php-xdebug
【讨论】:
它对我有用。非常感谢! 在我的情况下,它已安装,但在构建过程中被 Docker 映像的作者禁用。我需要phpenmod xdebug
以上是关于PHP 单元。错误:没有代码覆盖驱动程序可用。 (安装了xdebug)的主要内容,如果未能解决你的问题,请参考以下文章