2013-02-11 38 views
1

我使用的Symfony 2,PHPUnit的3.7.10和5.0.4 PhpStormPHPUnit的TestListener不PhpStorm

我在namespace Acme\DemoBundle\Tests

MyTestListener(實現PHPUnit_Framework_TestListener)工作當我從CLI調用phpunit與vendor/bin/phpunit.bat -c app/ 聽衆的工作,測試是成功的。

我發現這個:PHPUnit, PHPUnit_Framework_TestListener, Netbeans and the PHPUnit xml config但它似乎是另一個問題。

但是當我在PhpStorm中開始測試時,監聽器沒有加載,有些對象應該被注入到抽象測試類中,在這種情況下它們是null。我還注意到,當我使用MyTestListener類中的斷點進行調試時,調試器不會停止在此類中,其他斷點工作正常。

的phpunit.xml項:

<listeners> 
     <listener class="Acme\DemoBundle\Tests\MyTestListener" file="../src/Acme/DemoBundle/Tests/MyTestListener.php"> 
     </listener> 
    </listeners> 

我也嘗試添加一個空元素,它並不能幫助。

在PhpStorm我運行/調試配置我指定phpunit.xml引導文件。 我還爲命令行/解釋器添加此選項:-d auto_prepend_file=vendor/autoload.php

phpunit.xml中的偵聽器配置似乎被解析,但不起作用。當我將類名更改爲無效的文件/類時,出現錯誤,文件無法打開該流。我也嘗試使用絕對文件路徑或將斜槓更改爲反斜槓,沒有任何作用。

回答

0

太可惜了......我發現我自己的錯誤

我做的所有測試從CLI,但在PhpStorm只有一個測試類,所以套件名稱是不同的,在我的監聽器類我做的東西只如果套件名稱匹配:

if ($suite->getName() == "db-tests") {...} 

因此,解決辦法是擴展了表達

$name = $suite->getName(); 
if ($name == "db-tests" || 
    strpos($name, 'Acme\DemoBundle\Tests\Database') !== false) {...} 
相關問題