您需要将xdebug配置添加到您的php.ini中,这样如果phpunit再次调用php解释器(b/c of @runTestsInSeparateProcesses
)在单独的进程中运行测试,则会自动激活xdebug(远程调试设置等),而没有任何其他参数传递给可执行文件。
如果您已完成此操作(可能不是您的问题),请确保您的IDE正在接受多个单一的xdebug连接(xdebug连接限制或类似)。这是必要的,因为新的PHP进程将启动需要额外连接的新xdebug远程会话。如果连接没有完成,xdebug将等待连接限制为1(1),您将看到PHP挂起。
这种方法的缺点是,xdebug将永远加载,这将增加约。在CLI中执行PHP 10%的性能。
只要这是在开发框中,您可以创建一些脚本,您可以运行该脚本来为已安装的PHP二进制文件打开和关闭xdebug默认配置。
Composer不受此影响,因为它会在禁用xdebug的情况下重新启动,但大多数其他PHP cli工具不会这样做(也许不需要它,因为有很多可用的性能和缺点可以忽略不计,对于执行大量对象创建的PHP脚本来说,这是非常重要的)。
所以,设置你的php.ini并启用xdebug。一个好的IDE会显示它自动添加的设置(PHP cli -d
选项),只需将它们添加到您的php.ini
中,您应该对该测试场景适用。
当你得到它的工作,思考如何在飞行中禁止设置(sed
是非常方便的是,尤其是-i
[编辑在地方]在GNU系统,#1应该让你高兴的基础在这里, Windows我不能说什么工作得很好,万一你想知道)。
附加说明:我不能具体说Netbeans,因为我没有使用它,但是与Phpstorm的情况完全相同(我假设是真诚的),因为它在调用测试时将xdebug添加到PHP配置中(调试,覆盖)以及导致其他PHP脚本的子进程无法调试,除非我将该添加的xdebug配置放入php.ini
。
谢谢。我会继续前进+1并接受这个答案,因为它看起来像你知道你在说什么。我会阅读并稍后尝试。谢谢! – Ryan
不要接受它(或以后不接受它),除非它回答了*你的问题。我可能只是一个好的谈话者,但你的问题可能会有所不同。只是说。 ;) – hakre