我终于让 Xdebug 可以工作(包括断点和“跳过”的能力)来进行单元测试、功能测试以及在浏览器中进行浏览。
然而,每当我使用@runTestsInSeparateProcesses因为这个原因,Netbeans 断点不再起作用。
如何在使用 Xdebug 的测试中使用 Xdebug 断点@runTestsInSeparateProcesses
?
我在 Windows 10 版本 1607 内部版本 14393.0 上使用 Netbeans 8.2。 PHPUnit 5.7.21。
我正在运行 Laravel 5.4 Homestead(即 Vagrant 1.9.5),这意味着我的服务器是 Ubuntu 16.04.2 LTS(GNU/Linux 4.4.0-66-generic x86_64)。
您需要将 xdebug 配置添加到 php.ini 中,以便 phpunit 再次调用 php-interpreter(b/c@runTestsInSeparateProcesses
)以在单独的进程中运行测试,并加载 xdebug 自动激活(远程调试设置等),无需传递给可执行文件的任何其他参数。
如果您已经完成了此操作(您的问题可能并非如此),请确保您的 IDE 接受多个 xdebug 连接(xdebug 连接限制或类似连接)。这是必要的,因为新的 PHP 进程将启动需要额外连接的新 xdebug 远程会话。如果该连接未满足,xdebug 将等待,因此连接限制为一 (1),例如,您将看到 PHP 挂起。
这种方法的缺点是 xdebug 将始终被加载,这将添加 ca.在 CLI 中执行的 PHP 性能提高 10%。
就开发盒而言,您可以自己创建一些脚本,运行该脚本来打开和关闭已安装的 PHP 二进制文件的 xdebug 默认配置。
Composer 不受此影响,因为它将在禁用 xdebug 的情况下重新启动自身,但大多数其他 PHP cli 工具不会执行此操作(并且可能不需要它,因为有如此多的可用性能,并且可以忽略该缺点。这对于执行大量对象创建等操作的 PHP 脚本来说非常重要)。
因此,设置 php.ini 并启用 xdebug。一个好的 IDE 会显示它自动添加的设置(PHP cli-d
选项),只需将这些添加到您的php.ini
你应该适合这个测试场景。
当您让它工作时,请考虑如何动态禁用设置(sed
对此很方便,尤其是-i
[就地编辑]在 GNU 系统上,Stackoverflow 应该让您对这里的基础知识感到满意,对于 Windows,我不能说什么是工作良好的,以防您想知道)。
附加说明:我不能具体说 Netbeans,因为我不使用它,但对于 Phpstorm,这完全一样(我善意地假设),因为它在调用测试(调试、覆盖率)时将 xdebug 添加到 PHP 配置中),并产生导致其他 PHP 脚本无法调试的子进程,除非我将添加的 xdebug 配置放入php.ini
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)