I've recently installed laravel and have written some tests in /tests directory but when I use phpunit
at cmd in the same folder that phpunit.xml
exists, it says 'phpunit' is not recognized as an internal or external command,operable program or batch file.
. I'm using windows 7. what should I do?
问题:
回答1:
The solution for me:
php vendor/phpunit/phpunit/phpunit
This, of course, assumes you've set up a php environment variable in Windows
回答2:
As Unnawut said, it doesn't work because vendor/phpunit/phpunit/phpunit is not a native Windows executable. You need a .bat or .cmd file that will basically call 'php phpunit'. There should be one in vendor/bin, but to make life easy, try this - create a file phpunit.bat (or .cmd) at the root of your site, containing this:
@ECHO OFF
SET BIN_TARGET=%~dp0/vendor/phpunit/phpunit/phpunit
php "%BIN_TARGET%" %*
Now you can call phpunit from the command line at the root of the site.
回答3:
If you are a window user and you are having this issue, do this:
You need to tell Window where to find PHPUnit command, you can first of all verify that this file exists in your Laravel project under /vendor/bin
Finally you need to append the full path to /vendor/bin
in your window PATH variable,
To do this: 1. Right-click on 'Computer' then click properties
- On the second window click
Advanced system settings
- On the next window under
Advanced
clickEnvironmental Variables
- On the next window double-click
PATH
then set PATH variable by appending
the full path to your laravel-project/vendor/bin;
Notice the ;
at the end.
NB: Other variables might already exists in the PATH, so ensure you don't overwrite them by appending your own at the very end
- Finally click
Ok
on all the dialog boxes
回答4:
alias phpunit="vendor/bin/phpunit"
回答5:
The phpunit executable is not in your project root folder, that's why it can't find it.
Now I assume that you already have phpunit in your composer.json
file, something like this:
"require-dev": {
"phpunit/phpunit": "3.7.*"
}
When installed by composer, the package will be installed to vendor/vendor_name/package_name
. So to run it at your project root, type this command:
vendor/phpunit/phpunit/phpunit
回答6:
I added this command in command line instead of just "phpunit"
vendor\bin\phpunit
That worked for me.
回答7:
Borrowing from @Chris' excellent answer:
Even better, you can make vendor/phpunit/phpunit/phpunit
an environment variable, say "phpunit" and whenever you want to run the test in any laravel project you just call php %phpunit%
.
Demonstration
回答8:
If it says the following:
$ phpunit tests/Feature/ExampleTest.php PHPUnit 3.7.21 by Sebastian Bergmann.
Class 'tests/Feature/ExampleTest' could not be found in 'C:\xampp\htdocs\blog1\tests\Feature\ExampleTest.php'.
Instead of typing tests/Feature/ExampleTest.php you say tests " \\Feature\\Example.test" because you're using windows, not mac. :) GL & HF
Using just \ or / will give errors :)
回答9:
Install phpunit
globally:
composer global require phpunit/phpunit
Afterwards you will be able to run phpunit
( even on Windows ):
phpunit