3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SymfonyAdvent Calendar 2019

Day 10

Symfony と PHPStorm での PHPUnit テスト設定

Posted at

Symfony Advent Calendar 2019 の 10日目の記事です。昨日は、昨日は @77web@github さんの Symfony4で特定のディレクトリ以下のコントローラにだけURLのprefixをつける方法 でした!

今回が初めての Symfony Advent Calendar 参加になります。よろしくお願い致します。


僕は PHPStorm を使って開発をしています。

大変便利な IDE で、こと PHP を触っている分には、VSCode などの他のエディタや IDE では生きていけません。
統合開発環境は、適切に設定する非常に便利で強力ですが、この「適切に設定する」というのが意外とハードルが高かったりします。今回は、PHPStrom で Symfony の開発環境を構築するにあたり、PHPUnit でのテストができるように設定する方法を解説します。

PHPUnit Bridge component

公式ドキュメント: Testing

PHPUnit テストを Symfony 環境に統合するには、PHPUnit Bridge component をまずインストールします。
PHPUnit 自体を、Composer で require する必要はありません。

composer require --dev symfony/phpunit-bridge

インストールが完了するとつぎのように表示されます。

 How to test?


  * Write test cases in the tests/ folder
  * Run php bin/phpunit

このメッセージどおりに、プロジェクトのルートに tests ディレクトリを作って、

bin/phpunit

を実行すると、PHPUnit が自動的にインストールされて、テストが実行されます。

たまに、このコマンドを実行すると、command not found になることがあります。
作成済みのプロジェクトを Git リポジトリから clone して、composer install をしたような場合に、その症状がでるようです。そんな時には、PHPUnit Bridge component を一旦削除して、再度インストールします。

composer remove symfony/phpunit-bridge

その後

composer require --dev symfony/phpunit-bridge

これで、bin ディレクトリに phpunit ができているはずです。
正常にインストールされたら、bin/phpunit を実行します。

設定ファイル

プロジェクトのルートに phpunit.xml.dist というファイルがあると思います。
これを、同じ場所に phpunit.xml という名前でコピーしておきます。設定を変更したい場合に、こちらのファイルを変更します。

以上で、PHPUnit を使う準備ができました。コマンドラインから bin/cphpunit と実行すればいつでもテストが走ります。

PHPStorm の設定

次に PHPStorm 上でテストができるように設定します。Mac で説明していますが、Windows や Linux でもほぼ同じように設定できるはずです。

まず、PHP のランタイムを設定しましょう。

Preference を開いて、Languages & Frameworks > PHP を選択します。

PHP

PHP language level はプロジェクトで使う PHP のバージョンに合わせます。
CLI Interpreter の項目では、PHP の実行バイナリの種類を指定します。初めて登録するときや登録済みのとは別の PHP を登録する時には、右端の [...] ボタンをクリックします。

Interpreters

この画面で、PHP の実行バイナリの場所を指定します。僕の場合は phpbrew を使っているので、このようなパスになっています。左側にいくつかのバージョンがならんでいますが、これは phpbrew のそれぞれのバージョンを示しているものです。新しいPHPを追加する時は、左上の [+] ボタンをクリックします。Docker や Vagrant によるリモートPHPの設定も可能です。

いよいよ PHPUnit の設定です。

Preference の Languages & Frameworks > PHP > Test Frameworks を選択します。

Test Frameworks

初めての時には、左側のリストには Nothing to show と表示されていると思います。そこで左上の [+] ボタンをクリックします。

Choose

ここでは PHP Unit Local を選択します。もちろんリモートの指定もできます。

Test Frameworks 2

PHPUnit library の項目では、ラジオボタンでは、Path to phpunit.phar を選択します。そしてその下にあらわれる Path to phpunit.phar の欄では、phpunit の実行ファイルを指定しますが、そこでは bin/phpunit は指定せずに、bin/.phpunit-x.x-x/ (x.x-x はバージョン番号)の下にある phpunit を指定します。

ScreenShot 2019-12-07 17.13.34.png

(Mac でファイルダイアログを使って指定する時には、.phpunit が隠しファイルなので表示されませんが、[⌘] + [Shift] + [.] で表示されるようになります)

ここで bin/phpunit を指定した時に、僕の場合は、PHPStorm が勝手に PHPUnit をアップグレードして、.phpunit ディレクトリに2つのバージョンがインストールされることになってしまいました。
なんだか気持ち悪いので、上記のような設定にされることをおすすめします。

Test Runner の項目では Default configuration file にチェックを入れて、その右の欄でファイルを指定します。指定するファイルは、さきほどコピーした phpunit.xml を指定します。

テストを始めよう

以上で、PHPStorm 上でテストができる環境が整いました。PHPStorm では、テストメソッドの先頭の左側のマークをクリックすると、そのテストメソッドを実行できる他、プロジェクトペインの中でも tests ディレクトリの上や、そこに所属するディレクトリやテストクラスのファイルの上で右クリックから、テストが実行できます。

簡単にテストできる環境を整えてテスト駆動開発を実践しましょう。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?