PhpStorm 8 が、リリースされましたね!
PHP 5.6 や Laraevel の blade 対応など気になる新機能があるのですが、その中でも、注目なのが、PHPUnit by Remote Interpreter です。
この機能を使うことで、Vagrant VM にインストールされている phpunit をホストの PhpStorm から直接実行することができます。Vagrant による開発が普及してきた今では必須の機能といえるでしょう。
利用するには、いくつか設定が必要となるので、その手順を書いてみます。
対象の PHP アプリケーション
このエントリでは、以下の環境で PHP アプリケーション開発しているという想定で進めていきます。
- Vagrant VM で PHP アプリケーションを実行
- PHPUnit は、Composer でインストール
- PHPUnit の設定は、phpunit.xml に記述
PHP Interpreter の設定
はじめに PHP Interpreter に Vagrant VM の php を指定します。
Preferences – PHP を開いて、Interpreter プルダウンメニュー横にある ...
をクリックします。
クリックすると Interpreters ダイアログが表示されます。まず、左上にある +
をクリックして、Remote...
を選択します。
Configure Remote PHP Interpreter ダイアログが表示されるので、Vagrant
を選択します。選択すると、Vagrant 用の入力フォームに表示が変わり、各フォームに自動で値が入ります。ここでは編集せずに進みます。もし必要があれば変更して下さい。
OK
を押すと、Vagrant VM と通信して、設定項目が妥当か検証が行われます。問題無ければ、ダイアログが閉じます。
Interpreter ダイアログの左側ツリーには、追加したRemote PHP 5.5
が表示されます。右側フォームの General には、Vagrant VM にインストールされている PHP と Xdebug のバージョンが表示されるので、念のため確認しておくと良いでしょう。
OK
を押して、ダイアログを閉じます。
PHP に戻ると、設定した Interpreter が選択されています。OK
をクリックして、PHP Interpreter の設定は完了です。
PHPUnit By Remote Interpreter の設定
次に PHPUnit の設定を行ないます。Preferences – Project Settings – PHP – PHPUnit を開きます。
PHPUnit ダイアログの左上に +
があるので、これをクリックして、By Remote interpreter
を選択します。
PHPUnit By Remote Interpreter ダイアログが開きます。Interpreter に先ほど登録したRemote PHP 5.5
を選択して、OK
をクリックします。
ダイアログが閉じると、右側に PHPUnit の設定項目が表示されます。
PHPUnit 関連のファイルは、Composer のオートローダーから読み込むので、PHPUnit library には、Use custom autoloader
を選択します。Path to script が表示されるので、Composer の autoload.php のパスを設定します。なお、この設定は VM 内でのパスを指定する必要があるので注意して下さい。(テキストボックス横の ...
をクリックすると、VM 内のパスを GUI で指定することができます。)
次に、Test Runner の Default configuration file にチェックを入れて、phpunit.xml のパスを指定します。(phpunit.xml を利用していない場合、これは不要です。)ここのパスも VM 上のパスになります。
設定が完了したら、Apply
もしくは OK
をクリックします。これで、PHPUnit By Remote Interpreter の設定は完了です。
Run/Debug Condigurations での PHPUnit 設定
最後に、IDE からテストを実行するために、Run/Debug Configurations にて PHPUnit の設定を行ないます。
画面左上にある +
をクリックして、PHPUnit
を選択します。(PHPUnit on Server ではないので、注意して下さい。)
Name には、それと分かる名称を記述します。ここでは PHPUnit on Vagrant
とします。
次に、Test Runner の Test scope を選択します。ここでは、前項で phpunit.xml へのパスを指定しているので、Defined in the configuraion file
を指定します。(テストディレクトリを指定したい場合は、Directory
を選択して、対象のディレクトリを記述して下さい。)
OK
をクリックして、設定は完了です。
PHPUnit の実行
いま設定した PHPUnit を実行してみます。ウィンドウメニューバー右上にて、下記のように設定したPHPUnit on Vagrant
を選択した状態で、右側の矢印をクリックするとテストが実行されます。( Run を実行すれば良いので、メニューから選択しても、CTRL + R でも良いです。)
テストが実行できました!
IDE から Vagrant VM の PHPUnit を実行する良さ
実際に使ってみて良かった点です。
1. 操作が楽
これまでテストを実行する時は、ターミナルアプリケーション に遷移して、phpunit コマンドを実行していました。それが、PhpStorm 内で CTRL + R
だけで実行できるようになりました。ちょっとした手間ですが、同じウィンドウで済ませられるので楽です。
2. diff が見やすい
アサーションでテストが失敗した時に、期待した値と実際の値と差分を表示することができます。この差分表示は、コードの変更差分と同じ形式で、左に期待した値、右に実際の値を表示してくれます。これは phpunit コマンドの実行結果に比べて、分かりやすいです。
3. 各テストの実行時間が分かる
テスト全体の実行時間だけでなく、各テストケースの実行時間も記録されているので、一覧で確認することができます。もちろん、実行時間で並べ替えもできるので、遅いテストの確認なども簡単です。
さいごに
PHPStorm 8 の PHPUnit By Remote Interpreter を使って、PhpStorm から Vagrant VM にある PHPUnit を実行してみました。
上でも書きましたが、設定して、開発サイクルでテストを実行すると、想像していた以上に楽です。テストの実行が気軽にできますし、結果も分かりやすいです。
Vagrant を使って、PHP アプリケーションを開発しているなら、ぜひ設定してみて下さい。
参考
- Newer: Ansible で、複数サーバの RPM を一括で更新する
- Older: PHP コードの整形はプログラマがやるべきことじゃない