J'ai du mal à exécuter une seule méthode de test nommée testSaveAndDrop
dans le fichier escalation/EscalationGroupTest.php
avec phpunit
. J'ai essayé les combinaisons suivantes:
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=escalation/EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest.php::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest::testSaveAndDrop
phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=testSaveAndDrop
Dans chaque cas, toutes les méthodes de test du fichier escalation/EscalationGroupTest.php
sont exécutées. Comment sélectionner une seule méthode à la place?
Le nom de la classe est EscalationGroupTest
et la version de phpunit
est 3.2.8.
Réponses:
La commande suivante exécute le test sur une seule méthode:
Pour les nouvelles versions de phpunit, c'est juste:
la source
phpunit --filter methodName path/to/testing/file
nonClassName
.Je préfère marquer le test dans l'annotation comme
Ensuite, exécutez-le avec
Pas besoin de spécifier le chemin complet dans la ligne de commande, mais vous devez vous rappeler de le supprimer avant de valider, pour ne pas encombrer le code.
Vous pouvez également spécifier plusieurs groupes pour un seul test
la source
@group failing, Integration
<phpunit>
: <groups><include> <group> failing </ group > </include> </groups>@depends
d'un autre, vous devez donc localiser tous les tests interconnectés et donc utiliser l'@group
annotation.Voici la réponse la plus générique:
Si vous êtes sûr que le nom de la méthode est unique, vous ne pouvez filtrer que par nom de méthode (cela fonctionne pour moi)
Cependant, il est plus sûr de spécifier également le chemin / la référence du fichier
Exemple:
Note rapide: j'ai remarqué que si j'ai une fonction nommée
testSave
et qu'une autre fonction nommée à l'testSaveAndDrop
aide de la commandephpunit --filter testSave
s'exécutera égalementtestSaveAndDrop
et que toute autre fonction commençant partestSave*
, c'est bizarre !!la source
/testSave$/
La commande suivante exécutera exactement le
testSaveAndDrop
test.la source
\b
lieu de$
finalement fait l'affaire:--filter '/::testSaveAndDrop\b/'
.'/::testSaveAndDrop\b/'
et'/::testSaveAndDrop$/'
fonctionnent pour moi comme çaphpunit --filter ClassName::methodName$
etphpunit --filter ClassName::methodName\b
(sous Linux)pour exécuter le test phpunit dans laravel de plusieurs façons ..
pour test classe unique:
pour la méthode d'essai unique:
pour exécuter des tests de toutes les classes dans l'espace de noms:
pour plus de test de fonctionnement, voir plus
la source
Donc, quelque chose comme ça
Sans
=
et avec'
https://phpunit.de/manual/3.7/en/textui.html
la source
EscalationGroupTest
sont en cours de traitement.--filter
avant le nom de fichier et les choses devraient fonctionner correctement.No tests executed!
sur PHPUnit4.8.35
@Schleis Comment avez-vous changé la commande exactement?Exemple avec un nom de méthode personnalisé.
Exemple avec mot-clé test
la source
Si vous êtes dans des netbeans, vous pouvez cliquer avec le bouton droit dans la méthode de test et cliquer sur «Exécuter la méthode de test ciblée».
la source
Vous pouvez essayer cela, je peux exécuter des cas de test uniques
Par exemple:
Si vous souhaitez exécuter des cas de test uniques dans Laravel 5.5 Essayez
Par exemple:
la source
La raison pour laquelle tous vos tests sont exécutés est que vous avez l'
--filter
indicateur après le nom du fichier. PHPUnit ne lit pas du tout les options et exécute donc tous les cas de test.Depuis l'écran d'aide:
--filter
Déplacez donc l' argument avant le fichier de test souhaité, comme mentionné dans les réponses @Alex et @Ferid Mövsümov. Et vous ne devriez avoir que le test que vous souhaitez exécuter.la source
--filter
option se trouvait après le nom du fichier. Les deux autres réponses avaient la bonne réponse mais n'ont pas précisé pourquoi le filtre était appliqué.Si vous utilisez un fichier de configuration XML, vous pouvez ajouter ce qui suit à l'intérieur de la
phpunit
balise:Voir https://phpunit.de/manual/current/en/appendixes.configuration.html
la source
Mais je suis en retard à la fête. Mais en tant que personnel, je déteste écrire toute la ligne.
Au lieu de cela, j'utilise les raccourcis suivants dans le fichier .bash_profile assurez-vous de source .bash_profile le fichier après avoir ajouté un nouvel alias sinon cela ne fonctionnera pas.
Usage:
Si vous utilisez Visual Studio Code, vous pouvez utiliser le package suivant pour simplifier vos tests.
Vous pouvez ensuite définir la liaison de touches dans les paramètres. J'utilise la liaison Command + T dans mon MAC.
Maintenant, une fois que vous placez votre curseur sur une fonction , puis utilisez la liaison de touches, il exécutera automatiquement ce test unique.
Si vous devez exécuter la classe entière , placez le curseur sur la classe, puis utilisez la liaison de clé.
Si vous avez d'autres choses, tweekez toujours avec le terminal
Codage heureux!
la source
Vous devez utiliser --filter pour exécuter une seule méthode de test
php phpunit --filter "/::testMethod( .*)?$/" ClassTest ClassTest.php
Le filtre ci-dessus exécutera testMethod seul.
la source