在 Laravel 的 Homestead 中运行 PHPUnit

Posted

技术标签:

【中文标题】在 Laravel 的 Homestead 中运行 PHPUnit【英文标题】:Running PHPUnit in Laravel's Homestead 【发布时间】:2015-03-22 18:13:41 【问题描述】:

我正在使用 Homestead 来提供我的 Laravel 应用程序。我正在尝试运行 phpUnit。根据docs:

app/tests 目录中提供了一个示例测试文件。后 安装一个新的 Laravel 应用程序,只需运行 phpunit 在 命令行来运行你的测试。

好吧,当我在我的项目根目录(在 Homestead 环境中)“简单地运行”phpunit 时,我得到了这个:

当前未安装程序“phpunit”。

那我需要单独安装 PHPUnit 吗?文档没有提到它。我做错了什么?

【问题讨论】:

【参考方案1】:

您可以在系统上使用全局安装它。

composer global require phpunit/phpunit

但是,如果您需要为不同的项目使用不同的版本,这可能会导致问题。

另一种选择是通过引用vendor 目录的路径来使用作为依赖项的一部分安装的版本。

./vendor/bin/phpunit

您甚至可以在 ~/Homestead 目录中的别名文件中添加别名。这样,您始终使用与项目依赖项一起安装的 phpunit 版本。

alias phpunit=./vendor/bin/phpunit

您需要重新启动宅基地框才能使用别名。

【讨论】:

对我来说,这个安装的 phpunit v5.1 目前与 Laravel 不兼容。使用composer global require "phpunit/phpunit=4.4.*" 指定版本。 Homestead 现在自动设置这个别名。【参考方案2】:

由于它是开发所需的包,Laravel 提供了 PHPunit(composer 中的 require-dev 部分),你应该在 vendor 的文件夹中找到它:

$ your_app/vendor/bin/

您可以从应用文件夹的根目录运行命令,方法是输入:

$ vendor/bin/phpunit

希望对你有帮助!

【讨论】:

【参考方案3】:

您可以通过以下方式全局安装它:

$ composer global require "phpunit/phpunit=4.4.*"
# then use
$ phpunit

或者您可以将它与本地作曲家一起使用:

$ composer require "phpunit/phpunit=4.4.*"
# then
$ vendor/bin/phpunit

【讨论】:

第二种方法对我不起作用; phpunit 说You need to set up the project dependencies using the following commands: ...。不过,全局安装有效。

以上是关于在 Laravel 的 Homestead 中运行 PHPUnit的主要内容,如果未能解决你的问题,请参考以下文章

在 PhpStorm 中为 Laravel Homestead vagrant VM 运行测试

迁移到 Homestead 后在 PhpStorm 中为 Laravel 运行测试

新的 laravel/homestead 配置中的 GitHub OAuth 令牌的 Composer 错误

Laravel Homestead PHP:在计算机的 IP 地址上运行项目

如何设置 Laravel Boilerplate phpunit 以在 Homestead 环境中提供代码覆盖

为啥 laravel homestead 没有运行 Apache