我正在尝试使用 Laravel 项目的 Vagrant box 在 Windows 10 上的 PhpStorm 2017.1 中设置 PHPUnit。我已经设置了一个远程口译员,并且已经使用它几个月了,一切正常。
我被要求进行一些单元测试,因此我按照同事的指示(Mac 上的 PhpStorm)使用 PHPUnit 设置了 PhpStorm,但是当我在供应商文件夹中选择
autoload.php
时,我收到错误消息
“无法解析 PHPUnit 版本输出:无法打开输入文件:
”(无斜杠)。/vagrant/vendorphpunitphpunitphpunit
如果我在命令行中通过
vagrant ssh
运行 PHPUnit,我的测试执行得很好,并且我可以在 PhpStorm 中手动选择 PHPUnit phar,但是我缺少自动加载的类,所以一切都会失败。
如果您通过
Docker Compose
配置远程 PHP cli 解释器,如果您在解析 PHPUnit 版本输出时遇到类似的错误,原因可能来自于在 variables
中使用 docker-compose.yaml
(例如,在 $PWD
中使用
volume binding
))。
例如,如果您像这样挂载当前目录:
...
volumes:
- $PWD:/var/www/html
PHPStorm 不知道
$PWD
到底是什么,因此它无法解析 PHPUnit 输出,因为 volume binding
。您应该将变量更改为特定值(例如在本例中更改为 ./
):
...
volumes:
- ./:/var/www/html
我知道这是一个旧线程,但对我来说,问题是我有一个混乱的 docker 设置,并且我正在从调用
docker-compose up
的 Makefile 运行我的项目,而 PHPStorm 运行较新的 docker compose up
命令。
在尝试连接和配置 PHPUnit 并在从自动加载器查找 phpunit 文件时遇到相同的错误后,我决定检查 PHPStorm 服务面板。在那里,我只看到我的 PHP 容器正在运行,而我的项目实际上有 8 个其他 docker 容器正在运行(通过 Makefile)。我进一步挖掘,发现这个 PHP 容器(与 Makefile 启动的 PHP 容器不同)的路径映射完全错误(没有供应商或源代码)。
为了解决这个问题,我只是停止了所有外部正在运行的容器,并从 PHPStorm 的“服务”面板中启动了 docker-compose 设置,然后打开一个终端并验证那里的映射是否正确。
测试中一切正常。
基本上,我的建议是检查服务面板,看看那里的容器是否与您启动的容器相同,因为这是 PHPStorm 将选取并运行您的测试的容器。