簡體   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