【问题标题】:PHPStorm 8 remote PHPUnit mapping not workingPHPStorm 8远程PHPUnit映射不起作用
【发布时间】:2017-10-21 16:35:08
【问题描述】:

我的项目中有一个 vagrant VM(我的项目设置为 vagrant-vm/sites/myproject

我的测试在myproject/application/tests 中,我在 phpstorm 中设置了以下内容:

  1. 我的 VM 上有一个远程 PHP 解释器 (5.5.15-1~dotdeb.1),已为我的项目设置为默认值。
  2. 我将By Remote Interpreter PHPUnit 配置设置为Path to phpunit.phar,并且它在我的VM 中的路径/home/vagrant/phpunit.phar
  3. 我将 SFTP 部署配置设置为项目的默认配置,并设置了映射。

但是当我运行我的 PHPUnit 运行配置(PHPUnit 不是 PHPUnit on Server)时,我得到以下日志:

vagrant://C:/Users/Hugo/Documents/Projects/vagrant-swappy/usr/bin/php /home/vagrant/.phpstorm_helpers/phpunit.php --no-configuration C:\Users\Hugo\Documents\Projects\vagrant-swappy\sites\swappy\application\tests
Testing started at 11:19 ...
PHPUnit 4.1.4 by Sebastian Bergmann.

bash: line 0: cd: C:/Users/Hugo/Documents/Projects/vagrant-swappy/sites/swappy/application/tests: No such file or directory
Cannot open file "C:UsersHugoDocumentsProjectsvagrant-swappysitesswappyapplicationtests.php".


Process finished with exit code 1

编辑:一些截图:

【问题讨论】:

  • 请截图Settings | PHP | PHPUnit。另外:youtrack.jetbrains.com/issue/WI-24093#comment=27-778912
  • 已编辑,添加了一些截图。
  • 我看到您正在使用 PHAR 选项——在这种情况下很可能是 youtrack.jetbrains.com/issue/WI-24281——已修复;等待下一个 v8 EAP 构建应该是这周,一两天后)。
  • 1) 检查 Default configuration file: 并在您的 PHPUnit 设置中使用自定义 phpunit.xml。 2) 在您的 PHPUnit 运行配置中检查 Defined in the configuration filePHPUnit 不是 PHPunit by HTTP

标签: intellij-idea phpstorm


【解决方案1】:

我知道这已经过时了,但我遇到了同样的问题,想留下来帮助其他人。

我的设置:

  • 我的主机上的 PHPStorm(8)。
  • CentOS 作为我的客人(流浪者)
  • 在 Ubuntu 和 Mac 主机上测试

我首先从设置全局设置开始。这样,所有新项目都将继承默认设置。当前设置项目需要应用全局设置才能使其正常工作。

如果您还没有设置默认解释器,您现在应该这样做。转到语言和框架->PHP。确保解释器设置为使用您的 vagrant 解释器。为此,请单击 ... 并选择远程,选择 vagrant 并指向您的框位置。点击 OK 你应该会看到它连接到你的盒子。如果一切正常,再次点击 OK 返回默认解释器的选择框,然后点击 Apply

我还建议您前往 Tools->Vagrant 并设置您的默认 vagrant。这就是我的设置,但我认为这对让 PHPUnit 在 Vagrant 上工作没有任何影响,只是一种偏好。只是在这里注意这一点,以防这实际上有任何影响。

首先,让 PHPStorms 自动完成工作。

下载最新的phpunit.phar并保存在主机本地。我建议为 IDE 资源设置一个严格的目录,并将 phar 文件放在该目录中。转到 Language & Frameworks->PHP 并将 IDE 资源目录添加到您的包含路径。这将为您的代码启用自动完成功能。

接下来,打开默认设置,而不是项目设置(尽管现有项目也需要这样做),然后转到语言和框架->PHP->PHPUnit。在 Local 下,选择 Path to phpunit.phar 并将其更新为指向您新下载的 phpunit.phar 文件。

接下来,我们需要让 PHPUnit 了解 Vagrant。

Language & Frameworks->PHP->PHPUnit 中添加一个新的 PHPUnit。选择 By Remote Interpreter 并选择您新添加的 Vagrant Interpreter。选择您选择的方法,对我来说,我尝试使用包含路径,但它给了我错误(不想修复它)。我最终使用 Use custom autoloader 并将我的路径设置为/usr/local/bin/phpunit,因为我手动安装了它,这是我的路径。基本上,如果您遇到此问题,您要做的就是让 PHPStorm 知道 PHPUnit 的安装位置。

不要检查 Test Runner 的任何内容,因为这是全局设置。如果您在一个项目中,那么您需要检查默认配置文件并指向您的项目phpunit.xml 文件。这应该会加载您的 VM,并且路径应该是您的 VM 中的位置。如果不是您的虚拟机,则您选择了错误的解释器。您需要对任何要进行单元测试的项目执行此操作(除非您为所有项目创建了默认的 phpunit.xml 配置并在全局设置中进行设置。请记住,现有项目可能需要更新才能使用全局配置。)

现在环境已设置好(假设您使用上述设置进行全局和项目设置),最后要做的就是配置测试。

在 IDE 的右上角,调试器图标旁边是一个下拉菜单。点击它并选择编辑配置

添加一个新的 PHPUnit 测试。我将我的命名为 Run Tests 并选择 Defined in configuration file(这很重要,否则它将尝试使用您的本地路径而不是 Vagrant 路径。)应用并保存。

现在您的测试应该可以工作了。

如果您有任何问题,或者有点困惑,我只设置了默认(全局)设置,因此所有新项目都会继承这些设置。基本上,您的项目设置只需要匹配上面的内容。

我在让它工作时遇到了很多问题,发现 PHPStorms 文档没有什么帮助。 Google 把我带到了这里,但设置 Deployment 不是正确的方法。

希望这会有所帮助。

【讨论】:

  • 谢谢,现在 PHPStorms 自动完成功能适用于 PHPUnit。但是我仍然无法从 IDE 运行测试 - 我收到错误“无法打开所需的 'PHPUnit/Runner/Version.php'”任何想法如何解决这个问题?
  • 您似乎没有配置 PHPStorm 来查看您在服务器上安装的 PHPUnit。请参阅我的部分:Next, we need to let PHPUnit be aware of Vagrant. 请记住,PHPUnit 已安装在服务器上。
【解决方案2】:

此功能确实有效,但 PHPStorm 并未映射您的路径。对于“解释器”上的远程设置,请尝试选择“部署配置”并选择您的 SFTP 部署配置。还要确保您的 SFTP 映射将让 PHPStorm 映射您的所有文件路径,而不仅仅是您的 Web 可访问路径。您的部署下的“服务器上的 Web 路径...”设置有时毫无意义。

目前似乎不支持 vagrant-specific 路径映射,尽管我想这会到来。然而,它最终会成为一个红鲱鱼。

【讨论】:

  • 对于当前版本的 PHPStorm,这可能不再适用。
猜你喜欢
  • 2013-02-16
  • 2015-12-02
  • 2017-11-06
  • 2014-11-12
  • 1970-01-01
  • 2015-09-19
  • 2014-11-12
  • 2012-04-06
  • 2017-06-10
相关资源
最近更新 更多