2017-07-14 178 views
0

我在使用phpunit.xml文件運行PHPUnit測試時遇到問題。我配置的遠程PHP解釋是這樣的:使用PhpStorm在Homestead環境中調試PHPUnit測試

Remote PHP interpreter configuration

這種配置可以讓我調試PHP Web應用程序。我遇到了嘗試調試PHPUnit腳本的問題。我配置是這樣的:

PHPUnit configuration

有了這樣的配置,我可以調試PHPUnit測試:

debugging PHPUnit test

的問題是,我的PHPUnit的文件不會被讀取,我的環境變量不使用。因此我在測試中遇到了一些錯誤,例如CSRF令牌驗證異常。

如何使用我的phpunit.xml文件?我可以看到我可以在PHPUnit配置中添加默認配置文件。我需要在那裏指定我的項目目錄,而不是phpunit.xml itself

我可以在PHPUnit的Command->handleArguments()函數中看到,只有兩種方法來加載這個文件。我可以指定phpunit.xml所在的目錄,也可以不使用--no-configuration選項。

hendleArguments() function in Command class

不幸的是,當我指定我的項目位於作爲phpunit.xml位置的目錄,我失去調試我測試的能力。有趣的是,我仍然可以調試PHPUnit腳本(例如Command.php文件)。

我不想在IntelliJ(PhpStorm)中添加--no-configuration選項,但是當未選擇「默認配置文件」字段時,它會自動添加。

如何加載phpunit.xml文件而不失去調試我的測試的能力?

+0

你嘗試將其設置爲文件提供一個默認的配置文件|設置|語言和框架| PHP |測試框架>您的遠程PHPUnit配置? –

回答

1

問題是測試是孤立運行的。當我們在PHPUnit配置中指定phpunit.xml文件或項目目錄時,將考慮該文件。導致「分離」調試器的原因是獨立運行測試。 「修理」我們要設置屬性processIsolationfalse問題:

<?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> 
+0

或者在該虛擬機上配置PHP以啓用xdebug。另請參閱該部分的類似問題:https://stackoverflow.com/q/45332246/367456 – hakre