Ne serait-il pas génial si vos tests PHPUnit étaient automatiquement réexécutés chaque fois que vous modifiez du code ? Ce package peut faire exactement cela.
Une fois le package installé, vous pouvez faire ceci :
phpunit-watcher watch
Voici à quoi cela ressemble :
Cela exécutera les tests et les réexécutera chaque fois qu'un fichier du répertoire app
, src
ou tests
est modifié.
Vous souhaitez transmettre quelques arguments à PHPUnit ? Pas de problème, il suffit de les coller :
phpunit-watcher watch --filter=it_can_run_a_single_test
Dans son excellente conférence au Laracon EU 2017, Amo Chohan montre notre phpunit-watcher en action.
Nous investissons beaucoup de ressources dans la création des meilleurs packages open source de leur catégorie. Vous pouvez nous soutenir en achetant l'un de nos produits payants.
Nous apprécions grandement que vous nous envoyiez une carte postale de votre ville natale, mentionnant le(s) forfait(s) que vous utilisez. Vous trouverez notre adresse sur notre page contact. Nous publions toutes les cartes postales reçues sur notre mur virtuel de cartes postales.
Vous pouvez installer ce package globalement comme ceci
composer global require spatie/phpunit-watcher
Après cela, phpunit-watcher watch
peut être exécuté dans n'importe quel répertoire de votre système.
Vous pouvez également installer le package localement en tant que dépendance de développement dans votre projet.
composer require spatie/phpunit-watcher --dev
Installé localement, vous pouvez l'exécuter avec vendor/bin/phpunit-watcher watch
Tous les exemples supposent que vous avez installé le package globalement. Si vous avez opté pour l'installation locale, ajoutez vendor/bin/
partout où phpunit-watcher
est mentionné.
Vous pouvez démarrer le watcher avec :
phpunit-watcher watch
Cela exécutera les tests et les réexécutera chaque fois qu'un fichier du répertoire src
ou tests
est modifié.
Vous souhaitez transmettre quelques arguments à PHPUnit ? Pas de problème, il suffit de les coller :
phpunit-watcher watch --filter=it_can_run_a_single_test
Lors de l'exécution phpunit-watcher
à partir d'un script Composer, vous devrez peut-être rediriger les entrées pour que les commandes interactives fonctionnent et désactiver le délai d'attente par défaut :
{
"scripts" : {
"test:watch" : [
" Composer \ Config::disableProcessTimeout " ,
" phpunit-watcher watch < /dev/tty "
]
}
}
Sous Windows, actuellement, TTY n'est pas pris en charge, donc toute interaction a été désactivée. Bien que la surveillance des modifications fonctionne, tous les arguments pour PHPUnit doivent être fournis lors de l'appel initial de phpunit-watcher
.
Certains aspects du comportement de l'outil peuvent être modifiés. Le fichier d'options peut être nommé .phpunit-watcher.yml
, phpunit-watcher.yml
ou phpunit-watcher.yml.dist
. L'outil recherchera un fichier dans cet ordre.
Si un fichier de configuration n'existe pas dans le répertoire du projet, l'outil vérifiera si un fichier existe dans l'un des répertoires parents du répertoire du projet.
Voici quelques exemples de contenu. Lisez la suite pour une explication plus détaillée de toutes les options.
watch :
directories :
- src
- tests
fileMask : ' *.php '
notifications :
passingTests : false
failingTests : false
phpunit :
binaryPath : vendor/bin/phpunit
arguments : ' --stop-on-failure '
timeout : 180
Vous pouvez personnaliser les répertoires surveillés en créant un fichier nommé .phpunit-watcher.yml
dans le répertoire de votre projet. Voici quelques exemples de contenu :
watch :
directories :
- src
- tests
exclude :
- lib
fileMask : ' *.php '
ignoreDotFiles : true
ignoreVCS : true
ignoreVCSIgnored : false
Consultez la documentation du Finder pour plus de détails.
Si vous rencontrez des retards de performances avec des référentiels volumineux, essayez d'ajouter des entrées exclude
pour tous les sous-répertoires volumineux que vous n'avez pas besoin de surveiller. L'activation des options ignore...
peut également être utile. Il est également important de vous assurer que vous utilisez également le masque de fichier '*.php'
.
Par défaut, l'outil affichera des notifications sur le bureau chaque fois que les tests réussissent ou échouent. Si vous souhaitez désactiver certaines notifications du bureau, mettez à jour .phpunit-watcher.yml
en ajoutant une clé notifications
.
notifications :
passingTests : false
failingTests : false
Par défaut, l'outil affichera une aide pour les actions du clavier après chaque exécution. Vous pouvez masquer ces messages d'aide en ajoutant une clé hideManual
dans le .phpunit-watcher.yml
.
hideManual : true
Par défaut, l'outil utilise vendor/bin/phpunit
comme fichier binaire PHPUnit par défaut, cependant, il peut être utile de pouvoir personnaliser cette valeur pour les personnes qui ont un fichier binaire dans un emplacement différent.
Vous pouvez le spécifier dans le fichier de configuration .phpunit-watcher.yml
. Voici un exemple :
phpunit :
binaryPath : ./vendor/phpunit/phpunit/phpunit
Si vous souhaitez transmettre les mêmes arguments à PHPUnit à chaque démarrage de l'observateur, vous pouvez spécifier ceux-ci dans le fichier de configuration .phpunit-watcher.yml
. Voici un exemple :
phpunit :
arguments : ' --stop-on-failure '
Lors du démarrage de l'outil avec certains arguments (par exemple phpunit-watcher watch --filter=my_favourite_test
), ces arguments seront utilisés à la place de ceux spécifiés dans le fichier de configuration.
Veuillez consulter CHANGELOG pour plus d'informations sur ce qui a changé récemment.
composer test
Veuillez consulter CONTRIBUER pour plus de détails.
Si vous avez trouvé un bug concernant la sécurité, veuillez envoyer un mail à [email protected] au lieu d'utiliser le suivi des problèmes.
Vous êtes libre d'utiliser ce package (il est sous licence MIT), mais si vous l'utilisez souvent, nous apprécions grandement que vous nous envoyiez une carte postale de votre ville natale, mentionnant lequel de nos packages vous utilisez.
Notre adresse est : Spatie, Kruikstraat 22, 2018 Anvers, Belgique.
Nous publions toutes les cartes postales reçues sur le site Internet de notre entreprise.
Nous avons commencé à créer ce package après avoir lu cet excellent article de Christopher Pitt
Les commandes interactives ont été inspirées par Jest.
La licence MIT (MIT). Veuillez consulter le fichier de licence pour plus d'informations.