Bonjour,

Je suis actuellement la formation de pratique de la POO avec PHP mais je rencontre un tout petit problème lors d'un test via phpunit.

J'ai actuellement un petit soucis que je ne comprend pas. j'ai installé phpunit et quand je fais un /phpunit --version dans la répertoire C il m'indique la bonne version. par contre quand je suis dans mon C:\wamp64\www\MonFramework et que je tape dans l'invite de commande /vendor/bin/phpunit -- version ou encore le test /vendor/bin/phpunit test/Framework/AppTest.php il m'affiche "Le chemin spécifié est introuvable".

Est ce que quelqu'un aurait une idée ? C'est surement tout bête... Bonne fin de journée

21 réponses


Bonjour,

Tu as bien installé dans ton projet PHPUnit via composer en dev ?

tu as bien testé sans le premier slash ? sinon c'est vendor directement sous la racine de c: !!!

Oui, ou bien mettre un point devant pour dire qu'on part du dossier courant : ./vendor/bin/phpunit, si ça ne fonctionne pas c'est que tu n'as pas du require PHPUnit dans ton projet

noxter68
Auteur

Bonjour,

Merci pour vos réponses.

Alors quand je met un poit devant le / il me dit qu'il n'est pas reconnu en tant que commande interne(je suis en mode admin).
J'ai réinstallé phpunit via compose avec cette commande "composer require --dev phpunit/phpunit" et j'ai refait un coup de /vendor/bin/phpunit -- version pour voir si il le trouvais mais il continue de me marquer que le chemin spécifié est introuvable...
Le fichier phpunit se trouve pourtant bien dans vendor/bin/phpunit.

Cela est vraiment bizarre car je n'ai jamais eu de problème avec phpunit quand je l'utilisais dans d'autres tutoriels..

Est ce qu'il est possible que ce soit mon installation dans c: qui fasse foiré ? dois-je le réinstaller ?

Bonjour,

Si le avec le point de cette façon ./vendor/bin/phpunit -- version ne fonctionne pas essaye comme ça vendor/bin/phpunit -- version tu es sur windows ?

noxter68
Auteur

Salut,

Oui je suis sous windows.
Quand je fais ./vendor/bin/phpunit -- version -> '.' n’est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

et quand je fais vendor/bin/phpunit -- version -> 'vendor' n’est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

C'est exactement pareil...

Bizarre, ça devrait fonctionner pourtant, et dans ton bin tu as bien le fichier phpunit ?

noxter68
Auteur

Bien oui justement j'ai le phpunit et le phpunit.bat =( j'ai éssayé de recommencer la formation pour voir si j'avais fais une erreur mais non même résultat !

Tu utilise un invite de commande par défaut de Windows ? Sinon essaye avec https://jonathanmh.com/unit-testing-phpunit-windows/

noxter68
Auteur

Oui via cmd en mode admin

noxter68
Auteur

Je testerais ça après le travail, merci pour ton temps !

Ton problème vient du fait que le fichier phpunit n'est pas un programme ni une commande interne
car c'est un script php qui appelle lui même l'interpréteur php (la première ligne indique l'interpréteur à lancer)

#!/usr/bin/env php

Malheureusement c'est pour le monde Unix
sous windows il faut appeler directement l'interpréteur php.exe

> php vendor/bin/phpunit --version

Après rien ne t'empeche de créer ton propre fichier de commande 'phpunit.cmd'
qui contiendrait :

php phpunit %%1
noxter68
Auteur

Ah! Merci beaucoup pour ta réponse je test cela au plus vite! Merci =)

noxter68
Auteur

Ah par contre chez moi c'est #!/usr/bin/env sh et pas php

noxter68
Auteur

Ok j'ai trouvé l'erreur mais je ne saurais vraiment l'éxpliquer.

Enfaite je n'ai tout simplement pas besoin de taper ./vendor/bin/phpunit ou /vendor/bin/phpunit il me suffit de faire
phpunit --v pour la version
et
phpunit tests/Framework/AppTest.php et le test se fait...

En soit c'était tellement idiot.

Merci beaucoup pour votre temps et votre aide ! =)

Normalement sous vendor on a un nom de 'Vendeur' pour bien séparer les namespaces
ici tu as bin !!! assez étrange
Pour le sh, c'est le shell unix, et donc le fichier que tu ouvres est un script shell unix pas un fichier php
Il faut voir ce que fait ton fichier car là ça devient compliqué
normalement composer n'est pas trop lié à une plateforme en particulier

Tu ne peux pas être plus précis noxter68 j'ai le même problèmes

Personnellement j'ai eu ce problème il y a quelque mois, et j'ai mis entre guillemets la commande  : "./vendor/bin/phpunit" et ça a résolu le problème.

Lorsque j'ai également rencontré ce problème j'ai regardé si ça ne venait pas du terminal de mon éditeur (intellij / phpstorm) les deux avaient le même soucis

Pour faire mes tests unitaires je suis obligé de passer par Git Bash ou de configurer phpunit sur mon éditeur pour que ça fonctionne

En espérant aider quelques un.

bonjours,

je viens d'avoir le même soucis et ça fonctionne nickel avec les guillemets

merci

Bonjours,

J'ai le même soucis et ça fonctionne avec les guillemets sous windows

"./vendor/bin/phpunit"

Merci