在 PhpStorm 中使用远程 PHPUnit 覆盖

在 PhpStorm 中使用远程 PHPUnit 覆盖

我正在以下设置中工作:

有一个正在运行的开发虚拟机,我可以在其中访问代码库并将其用作 PhpStorm 中的项目位置。所有内容(nginx、数据库、phpunit 等)都在该虚拟机上运行。我有一个连接到该虚拟机的网络驱动器,但只能访问签出目录。

我配置了 PHPUnit 来创建一个可以从我的主机访问的 coverage.xml。

现在,我想使用该数据显示 PHPStorm 中的代码覆盖率,但似乎没有办法为此使用外部生成的覆盖率文件。我正在 VM 上远程运行单元测试,而不是使用 IDE 功能(因为我找不到远程运行测试的方法)。

是否存在我没​​有意识到的调整或选项?

答案1

是的,你可以使用任何 coverage.xml只要文件名正确,就可以在 IDE 中执行此操作(即使它是在其他地方生成的)。但这必须手动完成,并且频繁使用不太方便。

这个想法是:

  1. 在远程机器上运行您的 PHPUnit 测试并生成coverage.xml
  2. 使用任何合适的工具处理它,用本地路径替换远程路径(例如,某些自定义 Phing 目标;在文本编辑器中简单地查找+替换或任何其他操作)。当然,如果远程路径与本地路径不同,那就跳过它。
  3. 告诉 IDE 使用此文件通过以下方式显示覆盖率详细信息工具 | 显示代码覆盖率数据—— 在此处附加所需文件。
    请注意:最有可能的 (我已经很久没用过这个了,所以可能从那时起它就变了)每次获得新的 coverage.xml 时,您都必须删除并再次添加该文件(这是最大的烦恼)——IDE 会缓存此类文件的内容。检查这张票的一些详细信息

答案2

更新:至少从 PHPStorm 2016.1 或更早版本(例如版本 9 或 10)开始,您可以通过 SSH 服务器使用 PHPUnit 自动获取 PHPUnit 代码覆盖率。您必须首先按照官方指南中的步骤添加远程 PHP 解释器。然后,只需将其选择为您的默认项目 PHP 解释器。运行测试时,您可以单击“使用 Coverage 运行‘MyTest’”,它会自动通过 SSH 复制并加载覆盖率文件。

来源:https://confluence.jetbrains.com/display/PhpStorm/Running+PHPUnit+tests+over+SSH+on+a+remote+server+with+PhpStorm

相关内容