使用 PhpStorm 在 Homestead 环境中调试 PHPUnit 测试
Debugging PHPUnit tests in Homestead environment with PhpStorm
我在 运行 PHP 使用 phpunit.xml
文件进行单元测试时遇到问题。我这样配置远程 PHP 解释器:
此配置允许我调试 PHP Web 应用程序。我在尝试调试 PHPUnit 脚本时遇到问题。我是这样配置的:
有了这样的配置我可以调试PHP单元测试:
问题是我的PHP单元文件没有被读取,我的环境变量也没有被使用。结果,我在测试中遇到了一些错误,例如 CSRF 令牌验证异常。
如何使用我的 phpunit.xml
文件?我可以看到我可以在 PHP 单元配置中添加默认配置文件。我需要在那里指定我的项目目录,而不是 phpunit.xml itself
.
我在 PHPUnit 的 Command->handleArguments()
函数中看到只有两种方法可以加载这个文件。我可以指定 phpunit.xml
所在的目录,也可以不使用 --no-configuration
选项。
不幸的是,当我将项目所在的目录指定为 phpunit.xml
的位置时,我失去了调试测试的能力。有趣的是,我仍然可以调试 PHP 单元脚本(例如 Command.php 文件)。
我不想在 IntelliJ (PhpStorm) 中添加 --no-configuration
选项,但是当字段 "Default configuration file" 未被选中时它会自动添加。
如何加载 phpunit.xml
文件而不失去调试测试的能力?
问题是测试 运行 是孤立的。当我们在 PHPUnit 配置中指定 phpunit.xml
文件或项目目录时,会考虑该文件。导致 "detaching" 调试器的原因是 运行 隔离测试。对于 "fix" 这个问题,我们必须将属性 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>
我在 运行 PHP 使用 phpunit.xml
文件进行单元测试时遇到问题。我这样配置远程 PHP 解释器:
此配置允许我调试 PHP Web 应用程序。我在尝试调试 PHPUnit 脚本时遇到问题。我是这样配置的:
有了这样的配置我可以调试PHP单元测试:
问题是我的PHP单元文件没有被读取,我的环境变量也没有被使用。结果,我在测试中遇到了一些错误,例如 CSRF 令牌验证异常。
如何使用我的 phpunit.xml
文件?我可以看到我可以在 PHP 单元配置中添加默认配置文件。我需要在那里指定我的项目目录,而不是 phpunit.xml itself
.
我在 PHPUnit 的 Command->handleArguments()
函数中看到只有两种方法可以加载这个文件。我可以指定 phpunit.xml
所在的目录,也可以不使用 --no-configuration
选项。
不幸的是,当我将项目所在的目录指定为 phpunit.xml
的位置时,我失去了调试测试的能力。有趣的是,我仍然可以调试 PHP 单元脚本(例如 Command.php 文件)。
我不想在 IntelliJ (PhpStorm) 中添加 --no-configuration
选项,但是当字段 "Default configuration file" 未被选中时它会自动添加。
如何加载 phpunit.xml
文件而不失去调试测试的能力?
问题是测试 运行 是孤立的。当我们在 PHPUnit 配置中指定 phpunit.xml
文件或项目目录时,会考虑该文件。导致 "detaching" 调试器的原因是 运行 隔离测试。对于 "fix" 这个问题,我们必须将属性 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>