PhpStormを使用してPHP UnitのテストをVagrantのリモート上で実行する

LaravelのUnitテストを実行すべく、ローカルのVagrant環境上でPHP Unitを実行するように設定してみた。

環境

PHP Unit

PHP UnitはCompoerにてプロジェクトディレクトリにインストールする。
LaravelではデフォルトでComposerに入っているので特に設定はなし。
(Linuxに入れる必要はない)

1
"phpunit/phpunit": "~6.0"

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.phpassertTruefalseにしてみて失敗させてみる。

1
2
3
4
public function testBasicTest()
{
    $this->assertTrue(false);
}

ファイルを選択して右クリックすれば、そのファイルのみをテスト実行する事も可能。
失敗すると以下のようになる。

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

参考

   このエントリーをはてなブックマークに追加