unitarias tests test running run pruebas create assertsee phpunit code-coverage laravel-5.2

tests - Laravel 5: PHPUnit y controlador de cobertura de código no disponible



run test laravel (6)

Me gustaría usar PHPUnit para crear informes de cobertura de código. He intentado muchas configuraciones de instalación que se encuentran en la web. Pero nada parece funcionar.

Utilizo la última versión de Laravel 5 (> 5.2) y PHPUnit v. 5.0.10. Además, uso MAMP en Mac OS X 10.9.5 con PHP 7.

Cuando ejecuto PHPUnit que está integrado en mi distribución de Laravel, recibo el siguiente error.

$ 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`

Mi archivo de compositor se ve así:

"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.*" },

También probé el siguiente comando:

/Applications/MAMP/bin/php/php7.0.0/bin/phpdbg -qrr ../../../htdocs/myProject/vendor/bin/phpunit -v

Esto parece configurar bien el controlador de cobertura de código, pero termina en una excepción:

$ /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: ...

El phpunit.xml tiene el siguiente aspecto:

<?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>

¿Es posible usar PHPUnit que viene con el marco Laravel junto con la cobertura de código? ¿Cómo debo configurarlo y usarlo?

Muchas gracias por tu ayuda.


Actualización para cualquier otra persona atascada;

pecl install xdebug


Como respondieron otros desarrolladores, debe instalar PHP Xdebug, pero quiero agregar una nueva recomendación para los desarrolladores que usan Homestead de manera predeterminada que tienen Xdebug (pero está desactivado) y puede activarlo o desactivarlo

Si desea hacerlo en uso debajo del comando en la granja

#for on : xon #for off: xoff

Luego verifique php -v y verá Xdebug en el cuadro de detalles


Para usuarios de Windows:

1) Descargar xdebug

2) Cambie el nombre del archivo a _php_xdebug.dll_ y copie el archivo a la carpeta ext en su instalación de php, por ejemplo, C: / Archivos de programa (x86) / php / ext

3) Abra su archivo php.ini . Para mí está disponible en C: / Archivos de programa (x86) / php / php.ini .

4) Pegue el siguiente código en la parte inferior del archivo.

zend_extension = php_xdebug.dll xdebug.remote_enable = 1 xdebug.remote_handler = dbgp xdebug.remote_host = localhost xdebug.remote_autostart = 1 xdebug.remote_port = 9000 xdebug.show_local_vars = 1


Parece que te falta la extensión Xdebug. Si está utilizando homebrew, puede instalarlo como:

brew install php70-xdebug

Después de eso, no olvides editar tu archivo php.ini para habilitar la extensión.

php -i | grep xdebug

Después de comprobar que xdebug está habilitado, debería poder hacer la cobertura del código


Si ejecuta phpunit dentro de un cuadro vagabundo, entonces no necesita instalar xdebug en local y homestead viene con la instalación de xdebug automáticamente. solo necesita vincular el archivo xdebug.ini de homestead

Aquí está el paso que funcionó para mí:

cd ~/homestead/REPLACE THIS WITH YOUR HOMESTEAD FOLDER IN LOCAL // vagrant ssh sudo ln -s /etc/php/7.2/fpm/conf.d/20-xdebug.ini /etc/php/7.2/cli/conf.d/

En el comando anterior si está ejecutando 7.3 o 7.1 , reemplácelo según su versión de php


Actualización para PHP 7.1

xdebug es esencial para la búsqueda y la cobertura del código, por lo que debe instalarse o habilitarse en el entorno de prueba. xdebug en el entorno de producción no es recomendable, afectará el rendimiento si lo enciende

brew install php71-xdebug