繁体   English   中英

PHPUnit在xdebug活动和侦听时运行时冻结

[英]PHPUnit Freezes when run with xdebug active and listening

我从昨天起就陷入了困境,一个完全奇怪的问题无处不在。 我在Symfony项目中使用PHPStorm。 PHPUnit测试正常运行。 如果我在IDE中激活侦听器连接的监听模式并运行测试,phpunit会冻结,并且IDE会在30秒后自动停止。 我认为它与ide无关。 如果我使用MacGDBp我也遇到了同样的问题。 我在OSX 10.11上检查了所有与防火墙相关的东西,并在新的Brew环境中安装了php。 PHP是来自本地OSX和Brew的5.6版。

没有调试器,我相当盲目:-o

确保您还没有在后台运行另一个调试会话。

Xdebug一次只能监听一个正在运行的PHP进程。 通常有两种可能性。

1)正如@adrianGW所说,可能还有另一个进程附加到调试器上。

2)您的程序尝试加载另一个PHP进程,并且该进程在xdebug释放当前线程之前无法启动。 这很常见,PHPunit将在自己的线程中运行测试,这样它们就不会让对方陷入困境。 或者您正在应用程序中向同一服务器上的php脚本发出http请求,并且第二个请求正在等待第一个请求完成,因此您将被锁定,直到第一个脚本时间为止

PHPstorm中有两个修复:

1)您可以将Max Simultaneous Conections更改为大于1的数字

2)您可以Ignore external connections through unregistered servers configurations启用Ignore external connections through unregistered servers configurations ,但这只有在其他线程的原因类似于对同一服务器上的另一个域的请求时才会起作用,xdebug可以将其区分为未注册的服务器。

对我来说,原因是@runTestsInSeparateProcesses

这是症状:当我打开Netbeans中的调试然后运行export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_connect_back=0 remote_host=10.0.2.2"然后phpunit tests/Unit/MarkAsScheduledUnitTest.php --filter=testHandleExceptionWithMocking ,它只输出Sebastian Bergmann和贡献者的“PHPUnit 7.1.2”。 还有一个闪烁的光标并挂在那里。 当我进入Netbeans并退出调试时,然后运行phpunit测试。

每当我运行一个测试或一组测试(而不是整套测试)时,解决方案就会暂时删除@runTestsInSeparateProcesses

https://stackoverflow.com/a/37464247/470749解释了我为什么要使用@runTestsInSeparateProcesses

除了使用@runTestsInSeparateProcesses之外,Xdebug断点总是有效吗? 给了我如何在不暂时删除@runTestsInSeparateProcesses情况下更轻松地运行单个测试的@runTestsInSeparateProcesses

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM