Je ne parviens pas à 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, les méthodes all test du fichier escalation/EscalationGroupTest.php
sont exécutées. Comment choisir une seule méthode à la place?
Le nom de la classe est EscalationGroupTest
et la version de phpunit
est 3.2.8.
La commande suivante exécute le test sur une seule méthode:
phpunit --filter testSaveAndDrop EscalationGroupTest escalation/EscalationGroupTest.php
phpunit --filter methodName ClassName path/to/file.php
Je préfère marquer le test dans l'annotation comme
/**
* @group failing
* Tests the api edit form
*/
public function testEditAction()
Puis l'exécuter avec
phpunit --group failing
Inutile de spécifier le chemin complet dans la ligne de commande, mais vous devez vous souvenir de l'avoir supprimé avant de commettre, pour ne pas encombrer le code.
Vous pouvez également spécifier plusieurs groupes pour un seul test.
/**
* @group failing
* @group bug2204
*/
public function testSomethingElse()
{
}
Voici la réponse plus générique:
Si vous êtes certain que le nom de la méthode est unique, vous ne pouvez filtrer que par nom de méthode (cela fonctionne pour moi)
phpunit --filter {TestMethodName}
Cependant, il est plus sûr de spécifier le chemin du fichier/référence aussi
phpunit --filter {TestMethodName} {FilePath}
Exemple:
phpunit --filter testSaveAndDrop reference/to/escalation/EscalationGroupTest.php
Remarque rapide: j'ai remarqué que si j'ai une fonction nommée testSave
et une autre fonction nommée testSaveAndDrop
à l'aide de la commande phpunit --filter testSave
exécutera également testSaveAndDrop
et toute autre fonction commençant par testSave*
, c'est étrange!
La commande suivante exécutera exactement testSaveAndDrop
test.
phpunit --filter '/::testSaveAndDrop$/' escalation/EscalationGroupTest.php
Donc, quelque chose comme ça
phpunit --filter 'EscalationGroupTest::testSaveAndDrop' EscalationGroupTest escalation/EscalationGroupTest.php
Sans =
et avec '
Vous pouvez essayer cela, je suis en mesure d'exécuter des cas de test simples
phpunit tests/{testfilename}
Par exemple:
phpunit tests/StackoverflowTest.php
Si vous souhaitez exécuter des tests simples dans Laravel 5.5, essayez
vendor/bin/phpunit tests/Feature/{testfilename}
vendor/bin/phpunit tests/Unit/{testfilename}
Par exemple:
vendor/bin/phpunit tests/Feature/ContactpageTest.php
vendor/bin/phpunit tests/Unit/ContactpageTest.php
Si vous êtes sur Netbeans, vous pouvez cliquer avec le bouton droit de la souris sur la méthode de test et cliquer sur "Exécuter la méthode de test ciblée".
pour exécuter phpunit test à laravel par de nombreux moyens ..
vendor/bin/phpunit --filter methodName className pathTofile.php
vendor/bin/phpunit --filter 'namespace\\directoryName\\className::methodName'
pour test classe unique:
vendor/bin/phpunit --filter tests/Feature/UserTest.php
vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest'
vendor/bin/phpunit --filter 'UserTest'
pour test méthode unique:
vendor/bin/phpunit --filter testExample
vendor/bin/phpunit --filter 'Tests\\Feature\\UserTest::testExample'
vendor/bin/phpunit --filter testExample UserTest tests/Feature/UserTest.php
pour les tests d'exécution de toutes les classes de l'espace de noms:
vendor/bin/phpunit --filter 'Tests\\Feature'
pour plus de chemin exécuter test voir plus
Tous les tests sont exécutés parce que vous avez l'indicateur --filter
après le nom du fichier. PHPUnit ne lit pas du tout les options et exécute tous les cas de test.
Depuis l'écran d'aide:
Usage: phpunit [options] UnitTest [UnitTest.php]
phpunit [options] <directory>
Déplacez donc l'argument --filter
avant le fichier de test souhaité, comme indiqué dans les réponses @Alex et @ @ Ferid Mövsümov. Et vous ne devriez avoir que le test que vous voulez exécuter.
Si vous utilisez un fichier de configuration XML, vous pouvez ajouter les éléments suivants dans la balise phpunit
:
<groups>
<include>
<group>nameToInclude</group>
</include>
<exclude>
<group>nameToExclude</group>
</exclude>
</groups>
Voir https://phpunit.de/manual/current/en/appendixes.configuration.html
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.