PhpStormでVagrant仮想マシンのPHPUnitをSSH経由で実行する

2014年9月1日

IntelliJ IDEA

この間正式にリリースされた PhpStorm8。個人的に心待ちにしていた リモートマシンの PHPUnit を SSH 経由で実行する機能(Remote PHP interpreters) が追加されたので、早速試してみました。

ホスト PC の PhpStorm から Vagrant 仮想マシンの PHPUnit を実行するには、以前このブログで紹介した 「PHPUnit on Server」 という機能を使えばできますが、テストの実行が HTTP 経由のため制約が多く、設定も複雑で、アプリケーションによっては動作させるのが難しいこともありました。

新しく追加された SSH 経由の PHPUnit 実行は SSH でつながれば OK なので、様々なプロジェクトで利用できそうです。Vagrant のsynced_folder を使ってホスト PC で開発を行っている方や、Windows ホストで VirtualBox 上で PHP 開発している方はぜひお試しください。

動作確認環境

  • Mac OSX 10.11
  • PhpStorm 2016.2

目次

  1. Deployment を設定する
  2. Remote PHP Interpreter を設定する
  3. PHPUnit を設定する
  4. Run メニューで PHPUnit を設定する
  5. Cannot open file とエラー表示されるときは

Deployment を設定する

Preferences > Build, Execution, Deployment > Deployment を選択します。左上の「+」ボタンをクリックしてサーバを追加します。

Add Server

Name には管理しやすい名前を、Type は「SFTP」を選択します。

Deployment Add Server

Connection タブ

Connection タブで Vagrant 仮想マシンへ SSH で接続する設定を行います。

Deployment Connection タブ

Mappings タブ

Mappings タブで、ローカルのファイルパスと Vagrant 仮想マシンのファイルパスとのマッピングを設定します。サンプルの Vagrantfile では、ローカルの vagrant-php-symfony2-sandbox/share/symfony を Vagrant 仮想マシン上では /var/www/vagrant/symfony にマウントしているので、「Local path」と「Deployment path on server」にそれぞれ設定します。

Deployment Mapping タブ
上記ではデプロイ対象のディレクトリを synced_folder 以下すべてにしていますが、実はテストのディレクトリだけでも大丈夫です。慣れてきたらデプロイ対象をテストファイルに限定するとよいでしょう。

Remote PHP Interpreter を設定する

Interpreter に Vagrant 仮想マシンの PHP を設定します。

Remote Interpreter を追加

Preferences > Languages & Frameworks > PHP を選択します。PHP language level は Vagrant にインストールされているバージョンを選択します。Interpreter の右側の「...」ボタンをクリックします。

PHP Interpreter

Interpreter ウィンドウが開いたら、左上の「+」ボタンをクリックし、「Remote...」を選択します。

PHP Interpreter Remoteを選択

リモートマシンへの接続方法を設定

Configure Remote PHP Interpreter では、「Deployment configuration」を選択し、プルダウンで先ほど設定した「Vagrant」を選択します。

Deployment configuration を選択

設定を確認して保存

Name に管理しやすい名前をつけます。それ以外はデフォルトで設定されていると思います。PHP の PATH やバージョンなど確認し、問題なければ「OK」ボタンをクリックします。

Remote Interpreter に名前をつける

最初の画面に戻ってきました。これで Interpreter の設定は完了です。

PHP Interpreter 設定OK

PHPUnit を設定する

Vagrant 仮想マシンの PHPUnit を読み込むように設定します。Composer からインストールした PHPUnit でも大丈夫です。

Interpreter を選択

Preferences > Languages & Frameworks > PHP > PHPUnit を選択します。左上の「+」ボタンをクリックし、「By Remote Interpreter」を選択します。

PHPUnit Remote Interpreter

Intepreter は、さきほど登録した 「Remote PHP」 を選択します。

PHPUnit PHP Remote Interpreterを選択

リモートマシンの PHPUnit の読み込み方法を設定

PHPUnit の読み込み方法を設定します。Composer からインストールした PHPUnit の場合は Composer の autoload.php を設定します。PHPUnit の config ファイルや、bootstrap ファイルがあればここで設定しておくと便利です。

PHPUnit PATH を設定
サンプルの Vagrant 仮想マシンを使う場合は、PHPUnit を yum からインストールしているので、「Load from include path」を選択しておけば OK です。

Run メニューで PHPUnit を設定する

Run 設定を追加

上部メニュー > Run > Edit Configurations を選択します。

run-edit-config

左上メニューの「+」ボタンをクリックして、「PHPUnit」 を選択します。

PHPUnit を追加

Test scope に テストの実行単位を設定します。ここでは Class を選択しています。

Test scope に Class を選択

ツールバーの三角ボタンからテスト実行。

PHPUnit実行

グリーンが表示されました。

Test Green

Cannot open file とエラー表示されるときは

Test scope に Directory, Class, Method を選択すると「Cannot open file」エラーになる場合は、Deployment 設定がうまくいっていない可能性が高いです。Deployment を設定する を参考に設定を見なおしてください。

まとめ

  1. Deployment 設定で ローカルのパスと Vagrant 仮想マシンの パスをマッピングする
  2. PHP Interpreter 設定で Vagrant 仮想マシンの PHP を設定する
  3. PHPUnit 設定で Vagrant 仮想マシンの PHPUnit を設定する

テストをエディタから実行できるようにすると、開発リズムが格段にあがります。Vagrant で PHP 開発している方はぜひお試しください。

-技術ブログ
-