web-dev-qa-db-ja.com

ComposerおよびPhpStormを介したPHPUnit

PhpStormをユニットテスト用にセットアップするために何時間も試行しています。私が何をしても、私はこれを手に入れます

Process finished with exit code 1
Cannot find PHPUnit in include path ...

PHPUnitは(コマンドラインを介して)どこからでもアクセスできます。正しいインクルードパスを設定し、外部ライブラリにPHPUnitを追加しました。チャンスは無い。

まったく可能ですか、それともPEAR経由のインストールでのみ機能しますか?私はここですべての関連する質問に取り組みました。Macで、PHPUnitはCLIを介してスムーズに実行されています。

25
shredding

Patrick Vismaが http://youtrack.jetbrains.com/issue/WI-13429 に解決策を投稿しました:

PHPStormでphpunit.xmlの構成を編集し、インタープリターオプションを次のように設定します。

-d auto_prepend_file=/path/to/vendor/autoload.php
24
aderuwe

@aderuweの答えは機能しますが、その構成はプロジェクトごとのスコープではなく、すべてのプロジェクトを対象としています。 PHPStorm 6以降(実際にはEAPバージョンPS-126.260)でも、次のことができます。

  1. File-> Settings-> PHP-> PHPUNITに移動します。
  2. Use custom loaderを選択し、プロジェクトベンダーディレクトリからautoload.phpファイルを入力します。このオートローダーは、Composer(PHPUnitを含む)によって管理されるすべての依存関係を自動ロードします。
  3. デフォルトの構成ファイルを指定します(これは通常、プロジェクトのappディレクトリのphpunit.xml.distです)。

<code>PHP</code> -> <code>PHPUNIT</code>

プロジェクトごとに繰り返すである必要がありますが、次のことを行う必要がありますonce

PHPStormでデフォルトを正しく設定する必要があります。

  1. Run-> Edit Configurations...に移動するか、ツールバーのドロップダウンメニューをクリックしてEdit Configurations...を選択します。
  2. Defaults-> PHPUnitに移動します
  3. Test ScopeDefined in configuration fileを選択します
  4. Interpreter optionsテキストフィールドが空であることを確認してください
  5. PHPUnitDefaultsの上)に移動して、その下のエントリを削除します(次に特定のファイルでテストするときなどに、新しいファイルを設定しますが、新しいデフォルト)。

<code>Edit Configurations...</code>

62
Adam Lynch

PhpStormは、プロジェクトではなく、php.ini自体のinclude_pathでPHPUnitを見つけることに依存していると思います。

ローカルプロジェクトのvendor/binディレクトリをphp.iniのinclude_pathに追加してみることができますが、最終的にはPhpStormがcomposerのインストールをサポートし、プロジェクト自体のphpunitが利用可能であれば、それを実行することでメリットが得られるようです。実際に彼らのトラッカーで開かれた問題があるので、そこにログインしてそれを賛成することをお勧めします: http://youtrack.jetbrains.com/issue/WI-13429

5
Seldaek

現在のバージョンのPHPStorm(7.1)は、以前のバージョンのPHPUnit(3.7)でのみ正常に機能することを追加します。また、4.0以降では機能しません。 http://phpunit.de からphpunit.pharをダウンロードした場合は、設定=> PHP => PHPUnit => Path to phpunit.phar

2
Vasiliy P

すべてが「Test」ディレクトリにあり、テストスイートが構成ファイル「Test/phpunit.xml」で定義されている場合、私は単に「実行構成」を次のように設定できます:

  1. 実行|構成の編集をクリックして、[実行/デバッグ構成]ダイアログボックスを開きます。
  2. ツールバーの+をクリックし、PHPUnitを選択します(ローカルで実行される単体テストの場合)。
  3. 上部にあるNameに好きなものを入力します。
  4. Test scopeをテストが配置されているディレクトリに設定します。
  5. クリック[〜#〜] ok [〜#〜]
  6. 次に、新しい構成を実行します。

phpstorm-run-configuration-dialog

Phpstorm Run | Configurationダイアログ

1
b01

PHPStormには、カスタムのPHPUnitランナースクリプト(ide-phpunit.php)があり、これを内部的に使用して、異なるバージョンのPHPUnitを処理し、IDE統合を実行します。インクルードパスとPEARフォルダーレイアウトに依存するだけです。

それを行うには、それを実行します:

public static function checkIncludePath()
{
    //check include path
    $PHPUnitParentDirectory = self::getPHPUnitParentDirectory();
    if (is_null($PHPUnitParentDirectory)) {
        echo "Cannot find PHPUnit in include path (" . ini_get('include_path') . ")";
        exit(IDE_PHPUnit_Loader::FAILURE_EXIT);
    }
}

/**
 * @return null | string
 */
private static function getPHPUnitParentDirectory()
{
    $pathArray = explode(PATH_SEPARATOR, ini_get('include_path'));
    foreach ($pathArray as $path)
    {
        if (file_exists($path . DIRECTORY_SEPARATOR . 'PHPUnit/')) {
            return $path;
        }
    }
    return null;
}

composerを介してインストールし、通常の実行可能ファイル(ant/phing/nativeタスク)として追加できますが、プログレスバーなどのPHPStormが提供するすべての光沢のある機能が失われ、失敗にジャンプします。テストとコードカバレッジのサポート。

したがって、コードからPHPUnitという名前のフォルダーをインクルードパスのいずれかの場所に追加する必要があることを伝えることができます。ベンダーを追加すると役立つかもしれませんが、その場合は大文字と小文字を一致させる必要がありますに注意してください。

PHPStormがcomposerまたはpharからのPHPUnitの使用をサポートするまでは、より良い統合が得られるとは思いません( http://youtrack.jetbrains.com/issue/WI-13429 )ナシからそれを使用すると、インクルードパスをハッキングするとうまくいくかもしれません。

PHPStormの連中は3.7のランナーでいくつかの更新を行い、通常はPHPUnitの変更に非常に敏感です:)

1
edorian