PhpStormをユニットテスト用にセットアップするために何時間も試行しています。私が何をしても、私はこれを手に入れます
Process finished with exit code 1
Cannot find PHPUnit in include path ...
PHPUnitは(コマンドラインを介して)どこからでもアクセスできます。正しいインクルードパスを設定し、外部ライブラリにPHPUnitを追加しました。チャンスは無い。
まったく可能ですか、それともPEAR経由のインストールでのみ機能しますか?私はここですべての関連する質問に取り組みました。Macで、PHPUnitはCLIを介してスムーズに実行されています。
Patrick Vismaが http://youtrack.jetbrains.com/issue/WI-13429 に解決策を投稿しました:
PHPStormでphpunit.xmlの構成を編集し、インタープリターオプションを次のように設定します。
-d auto_prepend_file=/path/to/vendor/autoload.php
@aderuweの答えは機能しますが、その構成はプロジェクトごとのスコープではなく、すべてのプロジェクトを対象としています。 PHPStorm 6以降(実際にはEAPバージョンPS-126.260
)でも、次のことができます。
File
-> Settings
-> PHP
-> PHPUNIT
に移動します。Use custom loader
を選択し、プロジェクトベンダーディレクトリからautoload.php
ファイルを入力します。このオートローダーは、Composer(PHPUnitを含む)によって管理されるすべての依存関係を自動ロードします。app
ディレクトリのphpunit.xml.dist
です)。プロジェクトごとに繰り返すである必要がありますが、次のことを行う必要がありますonce。
PHPStormでデフォルトを正しく設定する必要があります。
Run
-> Edit Configurations...
に移動するか、ツールバーのドロップダウンメニューをクリックしてEdit Configurations...
を選択します。Defaults
-> PHPUnit
に移動しますTest Scope
でDefined in configuration file
を選択しますInterpreter options
テキストフィールドが空であることを確認してくださいPHPUnit
(Defaults
の上)に移動して、その下のエントリを削除します(次に特定のファイルでテストするときなどに、新しいファイルを設定しますが、新しいデフォルト)。PhpStormは、プロジェクトではなく、php.ini自体のinclude_pathでPHPUnitを見つけることに依存していると思います。
ローカルプロジェクトのvendor/binディレクトリをphp.iniのinclude_pathに追加してみることができますが、最終的にはPhpStormがcomposerのインストールをサポートし、プロジェクト自体のphpunitが利用可能であれば、それを実行することでメリットが得られるようです。実際に彼らのトラッカーで開かれた問題があるので、そこにログインしてそれを賛成することをお勧めします: http://youtrack.jetbrains.com/issue/WI-13429
現在のバージョンのPHPStorm(7.1)は、以前のバージョンのPHPUnit(3.7)でのみ正常に機能することを追加します。また、4.0以降では機能しません。 http://phpunit.de からphpunit.pharをダウンロードした場合は、設定=> PHP => PHPUnit => Path to phpunit.phar
すべてが「Test」ディレクトリにあり、テストスイートが構成ファイル「Test/phpunit.xml」で定義されている場合、私は単に「実行構成」を次のように設定できます:
Phpstorm Run | Configurationダイアログ
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の変更に非常に敏感です:)