在Windows 7上,PHPUnit命令无法在Laravel 4中使用。

22

我最近安装了Laravel,并在/tests目录中编写了一些测试。但是,当我在与phpunit.xml同一文件夹中使用cmd命令时,它会显示“'phpunit'不被认为是内部或外部命令、可运行程序或批处理文件。” 我正在使用Windows 7。我该怎么办?


是的,我的意思是已经安装了它。 - Ramin Omrani
你设置了环境变量吗? - Rahil Wazir
环境变量有什么用? - Ramin Omrani
能否运行 phpunit 命令?之前可以正常工作吗? - Rahil Wazir
不是这样的,你的意思是我应该将phpunit可执行文件添加到PATH中,对吧? - Ramin Omrani
太好了!如果还没有的话,可以在命令提示符中尝试输入 echo %PATH% 并查看输出是否包含 phpunit - Rahil Wazir
11个回答

44

我的解决方案:

php vendor/phpunit/phpunit/phpunit

当然,这假定您已经在Windows上设置了一个PHP环境变量。点击此处查看如何设置。


21

正如Unnawut所说,它无法工作是因为vendor/phpunit/phpunit/phpunit不是本地Windows可执行文件。您需要一个.bat或.cmd文件,其基本上将调用“php phpunit”。在vendor/bin中应该有一个文件,但为了使生活更轻松,请尝试创建一个名为phpunit.bat(或.cmd)的文件,放置在站点的根目录,其中包含以下内容:

@ECHO OFF
SET BIN_TARGET=%~dp0/vendor/phpunit/phpunit/phpunit
php "%BIN_TARGET%" %*

现在你可以在站点的根目录下从命令行调用phpunit。


12

如果您是Windows用户并且遇到此问题,请按照以下步骤操作:

首先,您需要告诉Windows在哪里找到PHPUnit命令,您可以首先验证此文件是否存在于Laravel项目的/vendor/bin目录下

图片描述

最后,您需要将完整路径添加到Window PATH变量中

操作步骤如下: 1.右键单击“计算机”,然后单击属性

图片描述

  1. 在第二个窗口中点击高级系统设置

图片描述

  1. 在下一个窗口中,在“高级”下点击环境变量

图片描述

  1. 在下一个窗口中双击PATH,然后通过追加设置PATH变量

将完整路径添加到您的laravel-project/vendor/bin;注意在末尾加上分号;

NB:其他变量可能已经存在于PATH中,因此请确保不要在最后追加自己的变量而覆盖它们

  1. 最后,点击所有对话框中的确定

图片描述


感谢您详细的解释,解决了我的问题。 - Sajidur Rahman

5
alias phpunit="vendor/bin/phpunit"

5
尽管这段代码可能解决了问题,但包括一些解释能够提高您的帖子质量。请记住,您正在为未来的读者回答问题,这些人可能不知道您建议使用代码的原因。同时,请尽量避免在代码中添加过多的解释性注释,因为这会降低代码和解释的可读性! - Blue

4

全局安装 phpunit:

composer global require phpunit/phpunit

接下来,您将能够运行phpunit(即使在Windows上):

phpunit

4

我在命令行中添加了这个命令,而不仅仅是"phpunit"

vendor\bin\phpunit

那对我来说起作用了。


1
我解释得更详细一些 :) - vimuth
1
或者您可以将 ./vendor/bin 添加到 PATH 环境变量中。这样,您就可以从任何 Laravel 根目录直接调用 phpunit - Arno van Oordt
@ArnovanOordt请将您的评论作为此问题的答案提交。它易于实现,是永久性的,并具有全局范围。这是最好的答案,值得拥有自己的帖子。 - Crazy World

3

phpunit可执行文件不在您的项目根目录中,这就是它找不到它的原因。

现在我假设您已经在composer.json文件中拥有phpunit,类似于以下内容:

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}

当通过Composer安装时,此软件包将被安装到vendor/vendor_name/package_name。因此,要在您的项目根目录中运行它,请键入以下命令:

vendor/phpunit/phpunit/phpunit

运行 composer update 命令,然后在包含 phpunit.xml 文件的文件夹中执行 vendor/phpunit/phpunit/phpunit 命令。 - Unnawut
哦,我想那就是我能提供的帮助了。祝你好运! - Unnawut

2

这对我有用

在控制台窗口中,用双引号括起来执行以下命令:

"vendor/bin/phpunit"


1

借鉴@Chris的优秀回答
更好的方法是将vendor/phpunit/phpunit/phpunit设置为环境变量,比如"phpunit",每当你想在任何Laravel项目中运行测试时,只需调用php %phpunit%

演示

enter image description here enter image description here


0
如果它说了以下内容: $ 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'.
你可以用 tests"\\Feature\\Example.test" 来代替输入 tests/Feature/ExampleTest.php,因为你使用的是 Windows 而不是 Mac。 :) 祝你好运和愉快!
只使用 \ 或 / 将会引发错误 :)

1
它没有说那个。错误信息是其他东西。 - Mark Walet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接