web-dev-qa-db-fra.com

Comment configurer PhpStorm pour utiliser symfony/phpunit-bridge

J'ai eu des problèmes avec la configuration de PhpStorm IDE pour utiliser http://symfony.com/doc/current/components/phpunit_bridge.html lorsque je travaillais avec Symfony 3.3. 

J'ai décidé de télécharger simplement phpunit.phar dans bin et de l'utiliser à la place.

Symfony 3.4 (et Symfony 4), n'a même pas phpunit.xml.dist prêt à l'emploi, il y a donc un problème avec l'utilisation de phpunit.phar facilement.

J'ai installé PHPUnit en utilisant flex:

composer req phpunit

Cela a créé phpunit.xml.dist et j'ai pu exécuter des tests en ligne de commande en:

php bin/phpunit

Mais encore une fois, je ne pouvais pas faire en sorte que PhpStorm l'utilise.

J'ai donc téléchargé phpunit.phar et cela peut fonctionner avec le phpunit.xml.dist fourni.

Question 1: Existe-t-il un moyen pour PhpStorm IDE d'utiliser phpunit-bridge? 

Question 2: Quelle est la meilleure pratique pour Symfony 4 (phpunit-bridge ou vanilla phpunit.phar)?

14
my-nick

Ce que je fais habituellement, c’est de pointer mon framework de test phpunit sur PHPStorm vers le répertoire secret .phpunit qui a été créé par le pont, par exemple:  enter image description here

L'emplacement du fichier "phar" est:

bin/.phpunit/phpunit-(major).(minor)/phpunit

ou dans certains cas:

vendor/bin/.phpunit/phpunit-(major).(minor)/phpunit

Après cela, l'exécutable phpunit spécifié sera appelé correctement lors de l'exécution de tests unitaires, mais avec une option --no-configuration. Cela peut entraîner des problèmes d'autoloading (beaucoup d'erreurs "class not found"), car l'autoloader généré par Composer n'est spécifié nulle part.

Pour résoudre ce problème, vous devez avoir un fichier phpunit.xml dans votre projet (c'est quand même une pratique courante), dans lequel vous spécifiez l'autoloader de Composer, à peu près comme ceci:

<phpunit bootstrap="vendor/autoload.php">

Ce phpunit.xml devrait alors être spécifié dans l'option "Fichier de configuration par défaut" et vous devriez être prêt à partir.


En ce qui concerne phpstorm utilisant phpunit-bridge: C'est possible en tant que script personnalisé, mais vous n'avez pas l'interface Nice et la possibilité d'exécuter (et de déboguer) des tests spécifiques via l'interface PHPStorm.

32
Renato Mefi

Je parviens à exécuter symfony/phpunit-bridge avec succès en utilisant cette configuration:

  • PhpStorm 2018.2.5
  • Symfony 4.1.x
  • PHP 7.1 s'exécutant sur le menu fixe
  • "symfony/test-pack": "^ 1.0"

Pas:

après composer require --dev symfony/test-pack j’ai dans dir /vendor/bin fichier simple-phpunit qui devrait fonctionner symfony/phpunit-bridge très bien.

Puis dans PhpStorm dans File | Settings | Languages & Frameworks | PHP | Test Frameworks set:

  • radio sélectionner pour Path to phpunit.phar option
  • Path to phpunit.phar vers le chemin absolu du fichier simple-phpunit (par exemple /application/vendor/bin/simple-phpunit)
  • cochez Default configuration file: et réglez la valeur d'entrée sur la localisation absolue de votre phpunit.xml.dist (dans mon cas, /application/phpunit.xml.dist

 phpstorm phpunit settings

remarque: le fichier phpunit.xml.dist doit être configuré pour utiliser symfony/phpunit-bridge - check https://symfony.com/doc/current/components/phpunit_bridge.html

Cliquez sur Appply/Ok et vous pouvez maintenant exécuter des tests depuis l'interface PhpStorm

5
grexlort

En plus de la réponse donnée, il convient de mentionner que le répertoire secret .phpunit n'apparaîtra pas de nulle part.

Après composer req phpunit, il faut d’abord exécuter le script phpunit, par exemple:

bin/phpunit

qui téléchargera une copie locale de PHPUnit et la placera dans le même dossier, ainsi le chemin d'accès à l'exécutable phar sera:

bin/.phpunit/phpunit-6.5/phpunit
0
emix