PHPUnit. Ошибка: нет драйвера для покрытия кода. (с установленным xdebug)
Есть ответ на аналогичный вопрос Laravel 5: PHPUnit и драйвер для покрытия кода, который работает, но у меня установлен 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" "--coverage-клевер" "C:\Users\CHINY\AppData\Local\Temp\пь-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" PHPUnit 5.3.4 от Себастьяна Бергмана и авторов.
Ошибка: драйвер кода покрытия недоступен
.II 3/ 3 (100%)
Время: 1,13 секунды, память: 4,00 МБ
ОК, но неполные, пропущенные или рискованные тесты! Тесты: 3, Утверждения: 1, Неполнота: 2. Сделано.] (Url)
xdebug conf (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
загруженные расширения
![загруженное расширение wamp]()
(у меня есть netbeans и каталог проекта в том же разделе Windows)
Ответы
Ответ 1
В большинстве установок Apache/PHP есть 2 файла php.ini
и, безусловно, в WAMPServer
Чтобы внести поправки в правильный php.ini
, используемый PHP в Apache, используйте меню
wampmanager->PHP->php.ini
Но для файла php.ini
, используемого PHP CLI, вам нужно вручную отредактировать
\wamp\bin\php\php{version}\php.ini
результат a php -v
должен выглядеть так, если XDEBUG настроен в CLI
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 для WAMPServer 3
Также:
Вы можете обнаружить, что tweek параметры конфигурации XDEBUG в php.ini
в соответствии с вашими конкретными потребностями
Ответ 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 и т.д.
Ответ 3
Мои настройки: (PHP + Xdebug на CLi включен)
MAMP 4 PRO/OS X 10.12
PHP 7.0.10 (cli) (built: Aug 25 2016 17:32:10) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans
zend_extension="/Applications/MAMP/bin/php/php7.0.10/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/Applications/MAMP/tmp"
xdebug.coverage_enable=1
И покрытие по-прежнему не будет выполнено: "Нет драйвера для покрытия кода"