composer php phpunit phpstorm composer-php

PHPUnit via Composer y PhpStorm



php ini phpstorm (6)

Ahora estoy intentando durante horas configurar PhpStorm para pruebas de unidad. Cualquier cosa que haga, entiendo esto

Process finished with exit code 1 Cannot find PHPUnit in include path ...

PHPUnit es (a través de la línea de comandos) accesible desde cualquier lugar; He establecido la ruta de inclusión correcta y he agregado PHPUnit a las bibliotecas externas. Ninguna posibilidad.

¿Es posible o solo funciona con instalaciones a través de PEAR? He resuelto todas las preguntas relacionadas aquí, estoy en Mac y PHPUnit funciona sin problemas a través de CLI.


Descubrí que si tengo toda mi información en el directorio "Prueba" y un conjunto de pruebas definido en un archivo de configuración "Prueba / phpunit.xml"; Simplemente puedo configurar una "Configuración de Ejecución" así:

  1. Abra el cuadro de diálogo Ejecutar / Depurar configuración haciendo clic en Ejecutar | Editar configuraciones .
  2. Haga clic en + en la barra de herramientas y elija PHPUnit (para pruebas unitarias ejecutadas localmente).
  3. Completa el nombre en la parte superior con lo que quieras.
  4. Establezca el alcance de la prueba en el directorio donde se encuentra la prueba.
  5. Haga clic en OK
  6. A continuación, ejecute la nueva configuración.

Phpstorm Run | Configuration dialog


La respuesta de @aderuwe funciona, pero esa configuración no está dentro del alcance de cada proyecto, es para todos los proyectos. Desde PHPStorm 6 (incluso la versión EAP PS-126.260 ) puede hacer lo siguiente:

  1. Vaya a File -> Settings -> PHP -> PHPUNIT .
  2. Seleccione Use custom loader y luego ingrese el archivo autoload.php del directorio de proveedores de su proyecto. Este cargador automático cargará automáticamente todas las dependencias gestionadas por Composer (incluida PHPUnit).
  3. Especifique el archivo de configuración predeterminado (generalmente es phpunit.xml.dist del directorio de la app de su proyecto).

Eso debe repetirse por proyecto , pero lo siguiente debe hacerse una vez .

Debe configurar sus valores predeterminados en PHPStorm correctamente.

  1. Vaya a Run -> Edit Configurations... o simplemente haga clic en el menú desplegable en la barra de herramientas y seleccione Edit Configurations...
  2. Ir a los Defaults -> PHPUnit
  3. En Test Scope , seleccione Defined in configuration file
  4. Asegúrese de que el campo de texto Interpreter options intérprete esté vacío
  5. Vaya a PHPUnit (por encima de los Defaults ) y elimine cualquier entrada debajo de él (de modo que la próxima vez que realice una prueba en un archivo en particular, etc. se configurará uno nuevo, pero con el nuevo valor predeterminado).

PHPStorm tiene una secuencia de comandos PHPUnit runner personalizada ( ide-phpunit.php ) que utiliza internamente para tratar con diferentes versiones de PHPUnit y para realizar la integración de IDE y que solo depende de la ruta de inclusión y del diseño de la carpeta PEAR .

Para ello ejecuta:

public static function checkIncludePath() { //check include path $PHPUnitParentDirectory = self::getPHPUnitParentDirectory(); if (is_null($PHPUnitParentDirectory)) { echo "Cannot find PHPUnit in include path (" . ini_get(''include_path'') . ")"; exit(IDE_PHPUnit_Loader::FAILURE_EXIT); } } /** * @return null | string */ private static function getPHPUnitParentDirectory() { $pathArray = explode(PATH_SEPARATOR, ini_get(''include_path'')); foreach ($pathArray as $path) { if (file_exists($path . DIRECTORY_SEPARATOR . ''PHPUnit/'')) { return $path; } } return null; }

Simplemente puede instalarlo a través del compositor y agregarlo como un ejecutable normal (ant / phing / native task) pero perderá todas las características brillantes que ofrece PHPStorm como la barra de progreso, saltando a una prueba fallida y al soporte de cobertura de código.

Entonces, a partir del código, puede indicar que necesita agregar una carpeta llamada PHPUnit a uno de los lugares en su ruta de inclusión. Agregar un proveedor podría ayudar allí, pero tenga en cuenta que debe coincidir con el caso al hacerlo.

Hasta que PHPStorm admita el uso de PHPUnit desde el compositor o un phar, no creo que obtenga una mejor integración ( youtrack.jetbrains.com/issue/WI-13429 ) con el uso de pera, pero hackear su ruta de inclusión podría funcionar. .

Los chicos de PHPStorm hicieron algunas actualizaciones en el runner para 3.7 y generalmente responden bastante bien a los cambios en PHPUnit :)


Patrick Visma publicó la solución en youtrack.jetbrains.com/issue/WI-13429 :

Edite la configuración de su phpunit.xml en PHPStorm y configure las opciones de Intérprete de esta manera:

-d auto_prepend_file=/path/to/vendor/autoload.php


Quiero agregar que la versión actual de PHPStorm (7.1) funciona bien solo con la versión anterior de PHPUnit (3.7). Y no funciona con 4.0 y superior. Si ha descargado phpunit.phar desde http://phpunit.de , puede apuntar PHPStorm a través de Configuración => PHP => PHPUnit => Ruta a phpunit.phar


Supongo que PhpStorm se basa en encontrar PHPUnit en la ruta de inclusión de php.ini, no de su proyecto.

Puede intentar agregar el directorio proveedor / bin de su proyecto local a include_path de php.ini, pero en última instancia, parece que PhpStorm podría beneficiarse de la instalación de compositores compatibles y ejecutar el phpunit del proyecto si está disponible. En realidad, hay un problema abierto en su rastreador, por lo que le recomiendo que inicie sesión allí y lo promueva: youtrack.jetbrains.com/issue/WI-13429