PHPUnitをPhpStormで実行する with Laradock

PhpStormでPHPUnitを実行できるように設定したので、その手順をまとめて見ました。
ちなみに、Laradockで環境を構築していることを前提としています。

## Xdebugのインストール

.env(laradcok)を編集します

```diff
- WORKSPACE_INSTALL_XDEBUG=false
+ WORKSPACE_INSTALL_XDEBUG=true

- PHP_FPM_INSTALL_XDEBUG=false
+ PHP_FPM_INSTALL_XDEBUG=true
```

### xdebug.iniの編集

`workspace/xdebug.ini` `php-fpm/xdebug.ini` の設定を書き換える

```diff
- xdebug.remote_host=dockerhost
+ xdebug.remote_host=host.docker.internal
- xdebug.remote_connect_back=1
+ xdebug.remote_connect_back=0
- xdebug.remote_port=9000
+ xdebug.remote_port=9001

- xdebug.remote_autostart=0
+ xdebug.remote_autostart=1
- xdebug.remote_enable=0
+ xdebug.remote_enable=1
- xdebug.cli_color=0
+ xdebug.cli_color=1
```

### dockerイメージを再ビルド

```shell
docker-compose build workspace php-fpm
```

これで、xdebug のインストールが完了しました。

## PhpStormでの設定

### Docker の設定

`Preferences > Build, Execution, Deployment > Docker` で `+` をクリックする。

Name : お好きな名前でOKです。

Connect to Docker daemon with : Docker for Mac

`Connection successful` と表示されればOKです。
<img width="1124" alt="phpstorm_phpunit1.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/35810e68-876d-a95d-270f-2cbe32ab380a.png">



## Interpreterを指定する

`Preferences | Languages & Frameworks | PHP` にある `･･･` をクリックする。
<img width="757" alt="phpstorm_phpunit1.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/be864b2f-01f4-0a15-7677-140044e140d3.png">




そして、こんな画面が出てきたら左上の + をクリックしてください。
<img width="936" alt="phpstorm_phpunit3.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/47650d3b-3343-c6f4-f33d-ca475a5917f6.png">



From Docker, Vagrant, VM, Remote... を選択してください。
↓のウィンドウが表示されたら、Docker を選択して、Server には先程作成した、Laradock Dockerを選択してください。(Image name と PHP interpreter pathは自動で見つけてきてくれます) 
<img width="737" alt="phpstorm_phpunit4.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/1c0e6a39-a728-f899-1bdb-c7b96c14b7f4.png">



そして、OKを押すと、下のウィンドウが表示されます。

内容に間違いがなかったら、OKを押してください。
<img width="1056" alt="phpstorm_phpunit5.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/bc17b7f3-7f3c-5bf3-d670-00386eb641e6.png">
<img width="774" alt="phpstorm_phpunit6.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/900dc27f-2225-a550-ec7b-d7b714c7ffb4.png">



このままだと、うまく動作しないのでパスを変更します。

Docker container 欄の右側にあるフォルダアイコンをクリックしてください。
<img width="636" alt="phpstorm_phpunit7.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/25221c9a-c6cf-25d7-5dfa-f65bfd447e01.png">





`Container path` の欄に `/var/www/src` と入力してください。
(ペンのアイコンをクリックしたら編集できます)

## PHPUnitの設定

`Preferences > Languages & Frameworks > PHP > Test Frameworks` で + をクリックして、`PHPUnit By Remote Interpreter` を選択してください。

`Interpreter` には先ほど作成したものを選択してください。(僕の場合は`laradock-workspace` です)
<img width="1124" alt="phpstorm_phpunit8.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/eca24b6c-4d22-fb3f-62f9-706b479c4d6d.png">



`PHPUnit library` は `Use Composer autoloader` を選択する。
`Path to script` にはworkspaceコンテナ内の `autoload.php` を指定する。
versionが表示されたらOKです。

次に メニューバー >  Run > Edit Configrations  をクリックしてください。
<img width="1183" alt="phpstorm_phpunit9.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/2a72b071-54ff-6c32-5336-b42c73fc9de8.png">



`Defined in the configuration file` を選択して、`Use alternative configuration file` にチェックを入れて、ホストのlaravel projrct内にある `phpunit.xml` を指定する。

これで、PhpStormでテストを実行することができるようになりました！
<img width="1792" alt="phpstorm_phpunit10.png" src="https://qiita-image-store.s3.amazonaws.com/0/129444/670e6bb0-ec14-5436-4c75-204f5e7d261e.png">

# まとめ

Testクラスで、`control + r` or `Command + r` を押すとファイル内の全てのテストメソッドが実行されます。
特定のテストメソッドを実行したい場合は、`control + option + r` を押して、メソッド名を選択すると実行できると思います。