4

Zend Framework 2 を使用しており、PhpStorm 5.0.4 ですべてのモジュールのテストを実行したいと考えています。テストをチェックインするように PhpStorm をセットアップしましmyproject/moduleたが、テストが正常に検出されました。問題は、必要な各モジュール内の構成ファイルを読み取らないことです (ブートストラップ ファイルを指します)。

モジュール ( source ) のディレクトリ構造は次のとおりです。

/module
    /User
        /tests
            /UserTest
                /Model
                    /UserTest.php
            Bootstrap.php
            phpunit.xml.dist
            TestConfig.php.dist

テストを実行すると、Bootstrap.php実行前に実行されていないため、エラーが発生しますUserTest.php。ターミナル内で実行cdすると正常に動作するため、すべてのファイルは正しいです。/myproject/module/User/tests/phpunit

各モジュール内で構成(したがってブートストラップ)を使用したいと思います。このオプションを相対パスで使用しようとしました--configurationが、機能しませんでした。

これが私の現在の構成です:

PhpStorm PHPUnit 構成

モジュールのテスト中に構成ファイル (およびブートストラップ) を実行する方法についての指針はありますか? つまり、モジュールには独自の構成ファイルとブートストラップがあります。

前もって感謝します。

4

3 に答える 3

3

PHP Storm 7 は、必要なデフォルトのブートストラップ ファイルは 1 つだけであると想定しているため、PHPUnit テスト構成ごとに個別のブートストラップ ファイルを直接有効にすることはありません。

ただし、zf2 はモジュールごとにテストを実行します。したがって、デフォルトを最初のモジュールに設定すると、他のモジュールは機能しなくなります。これを回避する方法は、

  1. File|Settings|PHP|PHPUnit のデフォルト オプションを削除します。デフォルトの設定ファイルを削除する必要はありませんが、デフォルトのブートストラップ ファイルを空にしてチェックを外す必要があります。チェックを外すだけでは不十分

  2. 実行 | 構成の編集に移動します (このボックスへのショートカットは他にもあります)。モジュールごとに、テスト構成を作成する必要があります。たとえば、標準のアプリケーション モジュールとそのための「アプリケーション モジュール テスト」、おそらく管理モジュールとそのための「管理モジュール テスト」があります。

  3. 各テスト (標準の zf2 ディレクトリ構造を想定)

a. テスト範囲: ディレクトリ b. ディレクトリ: C:\wamp\www\PROJECT-NAME\module\MODULE-NAME\test c. 「代替構成ファイルを使用する:」にチェックを入れます。C:\wamp\www\PROJECT-NAME\module\MODULE-NAME\test\MODULE-NAMETest\phpunit.xml.dist e と入力します。「Test Runner オプション」に「--bootstrap C:\wamp\www\PROJECT-NAME\module\MODULE-NAME\test\MODULE-NAMETest\Bootstrap.php」と入力します。

  1. 次のモジュールで繰り返します

ここでの問題は、デフォルトのブートストラップ フィールドにエントリがある限り、ケース固有のテスト ランナー オプションに何を入れても、phpstorm がそれを --bootstrap オプションとしてデフォルトとして追加することです。したがって、何をしても、最初の/デフォルトのテスト ケースを除いて、毎回間違ったブートストラップ ファイルを実行することになります。

お役に立てれば

于 2013-12-05T01:44:25.890 に答える
1

何かを見逃していない限り、モジュールごとにテスト構成を設定する必要があります。あなたの場合、myprojectがあります。代わりに、モジュールごとに1つ必要になり、次にそれぞれの構成をセットアップします(代替構成ファイルを使用します)。

于 2013-02-09T10:58:11.083 に答える