PHPUnit - Pas de tests exécution de' lors de l'utilisation de fichier de configuration
Le Problème
Pour améliorer ma qualité de code, j'ai décidé d'essayer d'apprendre comment tester mon code à l'aide de Tests Unitaires à la place de mon médiocre-à-meilleures solutions de test.
J'ai décidé d'installer PHPUnit à l'aide de compositeur pour le personnel de la bibliothèque qui me permet de parvenir à des fonctions de base de données. Au début, je n'ai pas de fichier de configuration pour PHPUnit et quand j'ai couru des commandes comme:
$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest
Veuillez noter que ceci est un terminal de commande, donc je ne comprend pas le .php
extension. Le GeneralStringFunctionsTest visée ci-dessus est en fait un GeneralStringFunctionsTest.php
fichier.
La sortie est ce que j'attendais:
Temps: 31 ms, Mémoire: 2.75 Mo
OK (1 essai, 1 affirmation)
J'ai ensuite essayé d'utiliser un fichier de configuration pour charger automatiquement le test de suite au lieu d'avoir à les saisir manuellement dans le fichier à chaque fois. J'ai créé un fichier appelé phpunit.xml
dans mon répertoire racine, et entré le code suivant dans le fichier: http://pastebin.com/0j0L4WBD:
<?xml version = "1.0" encoding="UTF-8" ?>
<phpunit>
<testsuites>
<testsuite name="Tests">
<directory>tests</directory>
</testsuite>
</testsuites>
</phpunit>
Maintenant, lorsque je lance la commande:
phpunit
J'obtiens le résultat suivant:
PHPUnit 4.5.0 par Sebastian Bergmann et les contributeurs.
De lecture de Configuration de /Users/muyiwa/Projects/DatabaseHelper/phpunit.xml
: 16 ms, Mémoire: 1.50 Mb
Pas de tests exécutés!
Dans le cas où il est utile, mon répertoire de la structure est comme suit:
src - répertoire de premier niveau (avec tout mon code source)
tests - répertoire de premier niveau (avec tous mes tests, structuré le même que celui de mon src dossier)
vendeur - Compositeur tiers des fichiers
J'ai aussi le compositeur json et le fichier de verrouillage, ainsi que le phpunit fichier xml dans le haut niveau en tant que fichiers.
Choses que j'ai Essayé de
- Changer le répertoire dans
phpunit.xml
àtests/GeneralStringFunctions
- Changer le répertoire dans
phpunit.xml
à./tests
- Le déplacement de la
phpunit.xml
fichier à latests
répertoire et ensuite de changer le répertoire à./
au lieu detests
. - L'ajout d'un suffixe attribut de l'annuaire de tag dans
phpunit.xml
pour préciser les "Tests", comme l'explicite le suffixe.
- Est
tests/GeneralStringFunctions/GeneralStringFunctionsTest
un dossier ou un nom de fichier? - C'est un nom de fichier, il est en fait appelé
GeneralStringFunctionsTest.php
. Dans l'interface de ligne de commande, je n'ai pas entrer dans le.php
extension parce qu'il a fait sans lui. - OK, alors votre configuration devrait fonctionner. Btw, si vous spécifiez un suffixe, il devrait être
Test.php
plutôt queTest
dans votre cas, mais cependant, vous êtes libre d'omettre que, depuisTest.php
est la valeur par défaut. - Merci pour le heads up! Avez-vous une idée pourquoi mon test n'est pas en cours d'exécution avec le fichier de configuration
phpunit.xml
? - Pourquoi ne pas nous montrer le fichier de configuration?
- Salut, j'ai fait, désolé si c'était pas trop clair: pastebin.com/0j0L4WBD.
- Quel système d'exploitation utilisez-vous? qui version de PHP?
- Hey, je suis en utilisant PHP 5.6.2 et OS X Yosemite.
Vous devez vous connecter pour publier un commentaire.
Pour ce que ça vaut (le retard), je suis tombé sur cette récemment, j'ai effectué une nouvelle Laravel 5.1 projet pour un site web simple. J'ai essayé de le déboguer et qu'il était confus quand j'ai essayé:
(qui par défaut est le test qui vient de affirme vrai, c'est vrai)
et a vu la sortie
Ce que le problème a fini par être pour moi était lié à mon installation de PHP -- "phpunit" a été enregistré globalement et configuré différemment, alors que la phpunit qui est venu avec la Laravel installation a été configuré de manière juste et a fonctionné à la perfection.
Ainsi, le correctif est en cours d'exécution du vendeur configuré phpunit (à partir de la même racine que le répertoire app/et tests/):
Espère que ça aide quelqu'un d'autre!
vendor/bin/phpunit
au lieu de le mondialphpunit
binaire. J'ai même allés aussi loin que la suppression du mondialphpunit
binaire donc je n'ai pas accidentellement faire la même erreur à nouveau-et il n'a pas sauté depuis. Je marque ce que l'on a accepté la réponse, comme c'est probablement la raison../vendor/bin/phpunit
a fait le tour pour moi sur une nouvelle laravel 5.4 installationphpunit
alias
pour./vendor/bin/phpunit
Votre fichier XML est très bien comme il est. Cependant, vous devez vous assurer que les fichiers PHP dans votre
tests/
dossier sont nommés comme suit:tests/Test.php <--- Note le "T" majuscule
tests/utilisateurTest.php
tests/fooBarTest.php
etc.
Les noms de fichier doit se terminer par "Test.php". C'est ce que PHPUnit est à la recherche dans les répertoires.
De plus, chaque méthode de test doit avoir un nom qui commence par "test":
Espère que ça aide!
--test-suffix=anything.php
à remplacerSur windows, utilisez la commande suivante dans terminal
c'est si la commande
renvoie "Pas de tests exécuté!"
alors que sur Mac
Espère que cela aide.
vendor\bin\phpunit
travaillé dans mon casJ'ai eu le même problème après PHPUnit sur nos machines virtuelles mis à jour vers la version 6. Même --debug et --verbose dit rien d'utile, juste "Pas de tests exécutés". En fin de compte il s'est avéré que les classes et espaces de noms ont été modifiés dans la nouvelle version et il ne voulait pas exécuter les fichiers qui contiennent des références à d'anciennes classes. Le correctif pour moi, c'était seulement pour remplacer dans tous les cas de test ceci:
avec:
Vous Avez Juste Besoin D'Appeler Le Fournisseur De Fichiers
vendor\bin\phpunit
Avis \ Pas /Je réalise que c'est super vieux, mais il m'est juste arrivé trop. J'espère que cela aidera quelqu'un.
Mon problème est que j'ai oublié le symbole " @ " dans /** @test */
MAL:
DROITE:
J'ai tiré mes cheveux pendant 10 minutes avant, j'ai décidé d'utiliser --debug (bonne voie à suivre par la voie) pour découvrir le simple fait que le nom de fichier n'a pas la convention de nommage, j'ai eu un supplément de "s" à la fin.
mal
droit
espère que cette remarque pourrait aider quelqu'un
si vous utilisez PHPSTORM aller dans les Paramètres, puis goto
Test Frameworks
et cliquez sur + et choisissez
PHPUnit Local
puisUse Composer Auto Loader
puis collez le présent comme dans le chemin d'accès au script de champ
C:\{YOUR PROJECT NAME}\vendor\autoload.php
HAPPY TESTING
Avez-vous ajouté une suite de test pour vous phpunit.xml fichier?
Vous pouvez ajouter plusieurs répertoires là-bas.
Time: 28 ms, Memory: 1.50Mb No tests executed!
Configuration read from /Users/muyiwa/Projects/Web Development/DatabaseHelper/phpunit.xml Time: 66 ms, Memory: 1.50Mb No tests executed!
. Cela fonctionne bien quand j'manuellement référence, il n'a tout simplement pas comme le chargement du fichier de configuration pour une raison 🙁phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest
../
". Juste pour info..bash_profile
à utiliser mon MAMP est la version de PHP, et j'ai aussi fait en sorte de mettre à jour lephp.ini
fichier à supprimer les balises courtes. Maintenant quand je le lance, il n'y a pas de tests, mais il renvoie le contenu du fichier xml comme, et puis il dit pas de tests exécutés.<?xml version="1.0" encoding="UTF-8" ?> <phpunit> <testsuites> <testsuite name="Tests"> <directory>/Users/muyiwa/Projects/webdev/DatabaseHelper/phpunit.xml</directory> </testsuite> </testsuites> </phpunit>PHPUnit 4.5.0 by Sebastian Bergmann and contributors. Configuration read from /Users/muyiwa/Projects/webdev/DatabaseHelper/phpunit.xml Time: 77 ms, Memory: 1.50Mb No tests executed!
Vérifier phpunit.xml fichier, regarder à l'intérieur des tests.
Ma version de phpunit (2019) est à la recherche pour les fichiers se terminant (suffixe) *Test.php .
Donc, assurez-vous que tous les fichiers de test sont nommés correctement (ex.: BookTest.php est correcte, BookTests.php n'est pas, BookTestCase.php ne l'est pas).
Pour moi, à l'aide de phpunit --debug m'a montré l'essai auquel il n'était pas en cours d'exécution,
à l'intérieur, j'ai eu
et je pense que, le répertoire est protégé avec .htaccess d'authentification, il ne pouvait pas obtenir par le biais de visiter la page
La solution pour moi a été de prendre ce test (ou les plus susceptibles de prendre .htaccess authentification)
C'est très tard, mais j'espère que cela aide quelqu'un.
J'ai eu mes tests à exécuter, à l'aide d'une référence absolue.
structure de dossier [ project/tests/test.php]
mon répertoire en ligne ressemblait à ça ./tests/test.php
Un peu sur le côté peut-être, mais si vous êtes (comme moi) à l'aide de Laravel dans Vagrant, assurez-vous que vous exécutez phpunit à l'intérieur de la vagrant box et non sur le "côté windows". 🙂
J'ai eu le problème de pas de tests en cours d'exécution, même si les choses ont été mis en place fin.
La cause en était l'espace de noms n'a pas été la première commande du fichier, c'est après un peu de doc-bloquer les commentaires.
revenir causé phpunit pour voir les tests et les exécuter correctement.
Le mien était un peu drôle.
Lorsque j'ai utilisé
php artisan make:test
j'ai accidentellement mis .php commeProductRewardPointController.php
qui a crééProductRewardPointController.php.php
et phpunit simplement ignoré.Je viens de supprimer l' .php et le retour à la normale
J'ai eu le même problème de Pas de tests exécutés!, résolu en gardant le même nom de fichier et classe nom.
Si vous utilisez IDEs comme JetBrains PHPStorm, veuillez également noter que: dans le
Run/Debug Configurations
fenêtre, leTest scope
doit être mis àdirectory
et de point que le répertoire où votretests
dossier situé.Juste m'a pris une demi-heure pour comprendre que j'ai oublié de définir le répertoire. Vous pouvez utiliser mondiale
phpunit.phar
aussi longtemps que vous le jeu de test de portée et le répertoire correctement, l'IDE poignée d'autres choses pour vous.à l'aide de console cmd, a résolu ce problème en passant le entièrement contenue chemin
Test réalisé
Je n'ai pas trouver d'autre moyen de le faire
Il ne fonctionne pas de cette façon
J'espère que cela a été utile pour quelqu'un