Ich möchte mit PHPUnit Code Coverage-Berichte erstellen. Ich habe viele Installations-Setups im Internet ausprobiert. Aber nichts scheint zu funktionieren.Laravel 5: PHPUnit und kein Coverage-Treiber verfügbar
Ich benutze die neueste Version von Laravel 5 (> 5.2) und PHPUnit v. 5.0.10. Außerdem verwende ich MAMP unter Mac OS X 10.9.5 mit PHP 7.
Wenn ich PHPUnit, die in meine Laravel-Distribution integriert ist, ausführen, erhalte ich den folgenden Fehler.
$ vendor/bin/phpunit -v
PHPUnit 5.0.10 by Sebastian Bergmann and contributors.
Runtime: PHP 7.0.0
Configuration: /Applications/MAMP/htdocs/myProject/phpunit.xml
Error: No code coverage driver is available`
Mein Komponist Datei wie folgt aussieht:
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "5.0.*",
"phpunit/php-code-coverage": "^3",
"symfony/css-selector": "2.8.*|3.0.*",
"symfony/dom-crawler": "2.8.*|3.0.*"
},
Ich habe auch den folgenden Befehl versucht:
/Applications/MAMP/bin/php/php7.0.0/bin/phpdbg -qrr ../../../htdocs/myProject/vendor/bin/phpunit -v
Dadurch wird die Code-Coverage-Treiber gut einzurichten scheint, aber es endet in einer Ausnahme:
$ /Applications/MAMP/bin/php/php7.0.0/bin/phpdbg -qrr ../../../htdocs/myProject/vendor/bin/phpunit -v
PHPUnit 5.0.10 by Sebastian Bergmann and contributors.
Runtime: PHPDBG 7.0.0
Configuration: /Applications/MAMP/htdocs/myProject/phpunit.xml
[PHP Fatal error: Uncaught ErrorException: include(/Applications/MAMP/htdocs/myProject/app/Exceptions/Handler.php): failed to open stream: Too many open files in /Applications/MAMP/htdocs/myProject/vendor/composer/ClassLoader.php:412
Stack trace:
...
Die phpunit.xml sieht wie folgt aus:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<logging>
<log type="coverage-html" target="./tests/codeCoverage" charset="UTF-8"/>
</logging>
<filter>
<whitelist>
<directory suffix=".php">app/</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
Ist es möglich, PHPUnit zu verwenden, die mit dem Laravel Rahmen kommt zusammen mit Codeabdeckung? Wie sollte ich es einrichten und verwenden?
Vielen Dank für Ihre Hilfe.
habe ich Homebrew xdebug zu installieren. Wie aktiviere ich die Erweiterung in php.ini? Ich habe die folgende Zeile aktiviert: zend_extension = "/ Anwendungen/MAMP/bin/php/php7.0.0/lib/php/Erweiterungen/no-debug-non-zts-20151012/xdebug.so" '. Der Pfad ist gültig. Ich weiß, dass es nicht der Pfad zu xdebug ist, der von Homebrew installiert wurde. Aber wo hat Homebrew xdebug installiert? Ich kann es nicht auf meinem System finden. – LaDude
Verwenden Sie php -i | grep php.ini, um zu sehen, wo sich die geladene php.ini-Konfigurationsdatei befindet. Nachdem Sie es gefunden haben, fügen Sie einfach am Ende der Datei die oben angegebene Zeile hinzu. In meinem Fall installierte Homebrew die Erweiterung in zend_extension = "/ usr/local/opt/php70-xdebug/xdebug.so" – Nenad
Es funktioniert jetzt. Ich habe die xdebug App verwendet, die von Homebrew installiert wurde. Ich habe tatsächlich die falsche php.ini-Datei bearbeitet, die sich in '/ Applications/MAMP/conf/php7.0.0 'befindet. Nach dem Bearbeiten der korrekten php.ini-Datei unter '/ Applications/MAMP/bin/php/php7.0.0/conf' und dem Neustart des MAMP-Web-Servers, führt phpunit nun die Code-Abdeckung aus. Danke für Ihre Hilfe. – LaDude