使用 PhpStorm 在 Homestead 环境中调试 PHPUnit 测试
Posted
技术标签:
【中文标题】使用 PhpStorm 在 Homestead 环境中调试 PHPUnit 测试【英文标题】:Debugging PHPUnit tests in Homestead environment with PhpStorm 【发布时间】:2017-12-20 02:48:37 【问题描述】:我在使用 phpunit.xml
文件运行 PHPUnit 测试时遇到问题。我这样配置远程 PHP 解释器:
此配置允许我调试 PHP Web 应用程序。我在尝试调试 PHPUnit 脚本时遇到问题。我是这样配置的:
通过这样的配置,我可以调试 PHPUnit 测试:
问题是我的 PHPUnit 文件没有被读取并且我的环境变量没有被使用。结果,我在测试中遇到了一些错误,例如 CSRF Token Validation 异常。
如何使用我的phpunit.xml
文件?我可以看到我可以在 PHPUnit 配置中添加默认配置文件。我需要在那里指定我的项目目录,而不是 phpunit.xml itself
。
我可以在 PHPUnit 的 Command->handleArguments()
函数中看到只有两种方法可以加载这个文件。我可以指定phpunit.xml
所在的目录,也可以不使用--no-configuration
选项。
不幸的是,当我将项目所在的目录指定为phpunit.xml
的位置时,我失去了调试测试的能力。有趣的是,我仍然可以调试 PHPUnit 脚本(例如 Command.php 文件)。
我不想在 IntelliJ (PhpStorm) 中添加--no-configuration
选项,但是当未选择“默认配置文件”字段时会自动添加。
如何加载phpunit.xml
文件而不失去调试测试的能力?
【问题讨论】:
您是否尝试将其设置为 File | 中的默认配置文件?设置 |语言和框架 | PHP |测试框架 > 你的远程 PHPUnit 配置? 【参考方案1】:问题是测试是单独运行的。当我们在 PHPUnit 配置中指定 phpunit.xml
文件或项目目录时,会考虑该文件。导致“分离”调试器的原因是孤立地运行测试。要“修复”问题,我们必须将属性 processIsolation
设置为 false
:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
...
</phpunit>
【讨论】:
或者在该 VM 上配置 PHP 以启用 xdebug。另请参阅关于该部分的类似问题:***.com/q/45332246/367456以上是关于使用 PhpStorm 在 Homestead 环境中调试 PHPUnit 测试的主要内容,如果未能解决你的问题,请参考以下文章
在 PhpStorm 中为 Laravel Homestead vagrant VM 运行测试
PHPStorm + Homestead + Xdebug + Chrome Xdebug Helper 调试配置
本地xdebug调试搭建 Laravel+homestead+phpstorm