PhpStormを使用してPHP UnitのテストをVagrantのリモート上で実行する
LaravelのUnitテストを実行すべく、ローカルのVagrant環境上でPHP Unitを実行するように設定してみた。
環境
- Vagrant
- Laravel 5.5.7
- PHP 7.0
PHP Unit
PHP UnitはCompoerにてプロジェクトディレクトリにインストールする。
LaravelではデフォルトでComposerに入っているので特に設定はなし。
(Linuxに入れる必要はない)
1
| |
PhpStorm
PhpStormでの設定方法。
設定したいプロジェクトのルートディレクトリを開いた状態で設定する。
PHP Interpreter
Preferenceを開く。
Languages & Frameworks -> PHP -> Test Frameworksを選択。
+マークをクリックし、PHPUnit by Remote Interpreterを選択する。

Interpreterを選択するウインドウが開くが、interpreterがないので作成する。
右端の...をクリックする。

ウインドウが開くので、+をクリックし、From Docker, Vagrant, VM, Remote...を選択。

開いたウインドウで、Vagrantを選択。すると自動で設定が読み込まれるのでそのままOKする。

OKをクリックすると、SSH接続が行われ情報が自動で読み込まれる。
そのままでOKなのでOKをクリックする。

Interpreterを選択する画面に戻るので、作成したInterpreterを選択し、OKをクリック。

追加したInterpreterでPHPUnitのライブラリを指定するが、Composer経由でのロードになるので、デフォルトのUse Composer autoloaderのままでよい。
Vagrant内でのautolodのパスを指定するので、...をクリック。

Scothboxは/var/wwwがホストと共有しているディレクトリになるので、そこからvendor/autoload.phpを選択する。

選択すると、追加されているPHPUnitのバージョンが表示される。

これでInterpreterの設定は完了。
Run/Debug Configurations
Configurationsの設定を行う。
メニューから、Run -> Edit Configurationsを選択。
+をクリックし、PHPUnitのConfigurationを追加する。

Nameは適当に書く。
Test scopeはテストしたいディレクトリを選択する。
Laravelのtestsディレクトリを指定しておく。(どこでもよい)
この設定の下部に、Errorと出ているのでFixをクリック。

PHPの設定ウインドウが開くので、PHP language levelはVagrant環境に合わせて7を選択。
CLI Interpreterは設定したinterpreterを選択する。

OKで閉じる。
実行
右上のセレクトボックスが、先ほど作成したConfigurationが選択されている状態になっているはずなので、そのまま緑の三角をクリック。

すると、testsディレクトリ以下のテストファイルが自動で起動し、テストが実行される。
デフォルトのサンプルテストは必ず成功するので、無事、テストが通ればOK。

ExampleTest.phpのassertTrueをfalseにしてみて失敗させてみる。
1 2 3 4 | |
ファイルを選択して右クリックすれば、そのファイルのみをテスト実行する事も可能。
失敗すると以下のようになる。

これで無事、成功と失敗の動作が確認できた。