1

私はSymfony2、PHPUnit 3.7.10、PhpStorm5.0.4を使用しています。

にクラスMyTestListenerPHPUnit_Framework_TestListenerを実装)がありnamespace Acme\DemoBundle\Testsます。

リスナーが機能するCLIからphpunitを呼び出すとvendor/bin/phpunit.bat -c app/ 、テストは成功します。

私はこれを見つけました:PHPUnit、PHPUnit_Framework_TestListener、Netbeans、およびPHPUnit xml構成ですが、別の問題のようです。

しかし、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のリスナー構成は解析されているようですが、機能しません。クラス名を無効なファイル/クラスに変更すると、ファイルがストリームを開くことができないというエラーが発生します。また、絶対ファイルパスを使用するか、スラッシュを円記号に変更しようとしましたが、何も機能しません。

4

1 に答える 1

0

なんて残念…自分の間違いを見つけた

私はCLIからすべてのテストを実行しますが、PhpStormでは1つのテストクラスのみであるため、スイート名が異なり、リスナークラスでは、スイート名が一致する場合にのみ処理を実行します。

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

したがって、解決策は式をに拡張することでした

$name = $suite->getName();
if ($name == "db-tests" || 
   strpos($name, 'Acme\DemoBundle\Tests\Database') !== false) {...}
于 2013-02-13T16:46:27.070 に答える