J'essaie maintenant depuis des heures de configurer PhpStorm pour les tests unitaires. Quoi que je fasse, je reçois ceci
Process finished with exit code 1
Cannot find PHPUnit in include path ...
PHPUnit est (via la ligne de commande) accessible de n'importe où; J'ai défini le chemin d'inclusion correct et j'ai ajouté PHPUnit aux bibliothèques externes. Aucune chance.
Est-ce possible ou ne fonctionne-t-il qu'avec des installations via PEAR? J'ai travaillé sur toutes les questions connexes ici, suis sur Mac et PHPUnit fonctionne bien via CLI.
Patrick Visma a posté la solution sur http://youtrack.jetbrains.com/issue/WI-13429 :
Modifiez la configuration de votre phpunit.xml dans PHPStorm et définissez les options de l'interpréteur comme ceci:
-d auto_prepend_file=/path/to/vendor/autoload.php
La réponse de @ aderuwe fonctionne mais cette configuration n'est pas étendue par projet, c'est pour tous les projets. Depuis PHPStorm 6 (en fait même la version EAP PS-126.260
), vous pouvez effectuer les opérations suivantes:
File
-> Settings
-> PHP
-> PHPUNIT
.Use custom loader
puis entrez le autoload.php
fichier depuis le répertoire du fournisseur de vos projets. Cet autochargeur chargera automatiquement toutes les dépendances gérées par Composer (y compris PHPUnit).phpunit.xml.dist
du répertoire app
de votre projet).Cela doit être répété par projet, mais les opérations suivantes doivent être effectuées une fois .
Vous devez configurer correctement vos paramètres par défaut dans PHPStorm.
Run
-> Edit Configurations...
ou cliquez simplement sur le menu déroulant de la barre d'outils et sélectionnez Edit Configurations...
.Defaults
-> PHPUnit
Test Scope
, sélectionnez Defined in configuration file
Interpreter options
le champ de texte est videPHPUnit
(au-dessus de Defaults
) et supprimez toute entrée en dessous (de sorte que la prochaine fois que vous ferez un test sur un fichier particulier, etc., il en configurera un nouveau mais en utilisant le nouveau défaut).Je suppose que PhpStorm repose sur la recherche de PHPUnit dans le include_path de php.ini lui-même, pas de votre projet.
Vous pouvez essayer d'ajouter le répertoire vendeur/bin de votre projet local au include_path de php.ini, mais finalement, il semble que PhpStorm pourrait bénéficier de la prise en charge de composer installe et exécute le phpunit du projet lui-même s'il est disponible. Il y a en fait un problème ouvert sur leur tracker, donc je vous recommande de vous y connecter et de le voter: http://youtrack.jetbrains.com/issue/WI-13429
Je veux ajouter que la version actuelle de PHPStorm (7.1) ne fonctionne bien qu'avec la version précédente de PHPUnit (3.7). Et il ne fonctionne pas avec 4.0 et supérieur. Si vous avez téléchargé phpunit.phar depuis http://phpunit.de , vous pouvez pointer PHPStorm vers celui-ci via Settings => PHP => PHPUnit => Path to phpunit.phar
J'ai constaté que si j'ai tout de moi dans le répertoire "Test", et une suite de tests définie dans un fichier de configuration "Test/phpunit.xml"; Je peux simplement configurer une "Exécuter la configuration" comme ceci:
Boîte de dialogue Phpstorm Run | Configuration
PHPStorm a un script de runner PHPUnit personnalisé (ide-phpunit.php
) qu'il utilise en interne pour gérer les différentes versions de PHPUnit et pour faire l'intégration IDE et qui repose simplement sur le chemin d'inclusion et le PEAR
disposition du dossier.
Pour ce faire, il exécute:
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;
}
Vous pouvez simplement l'installer via composer et l'ajouter en tant qu'exécutable normal (ant/phing/tâche native) mais vous perdrez toutes les fonctionnalités brillantes qu'offre PHPStorm comme la barre de progression, sautant à un échec) test et le support de couverture de code.
Donc, à partir du code, vous pouvez dire que vous devez ajouter un dossier nommé PHPUnit
à l'un des emplacements de votre chemin d'inclusion. L'ajout d'un fournisseur peut être utile mais gardez à l'esprit qu'il doit correspondre à la casse lors de cette opération.
Jusqu'à ce que PHPStorm prenne en charge l'utilisation de PHPUnit à partir de composer ou un phar, je ne pense pas que vous obtiendrez une meilleure intégration ( http://youtrack.jetbrains.com/issue/WI-13429
) en l'utilisant depuis pear mais le piratage de votre chemin d'inclusion pourrait fonctionner.
Les gars de PHPStorm ont fait quelques mises à jour sur le runner pour 3.7 et sont généralement assez réactifs aux changements dans PHPUnit :)