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)?
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:
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.
Je parviens à exécuter symfony/phpunit-bridge avec succès en utilisant cette configuration:
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:
Path to phpunit.phar
optionPath to phpunit.phar
vers le chemin absolu du fichier simple-phpunit
(par exemple /application/vendor/bin/simple-phpunit
)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
) 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
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