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 language level はプロジェクトで使う PHP のバージョンに合わせます。
CLI Interpreter の項目では、PHP の実行バイナリの種類を指定します。初めて登録するときや登録済みのとは別の PHP を登録する時には、右端の [...] ボタンをクリックします。
この画面で、PHP の実行バイナリの場所を指定します。僕の場合は phpbrew を使っているので、このようなパスになっています。左側にいくつかのバージョンがならんでいますが、これは phpbrew のそれぞれのバージョンを示しているものです。新しいPHPを追加する時は、左上の [+] ボタンをクリックします。Docker や Vagrant によるリモートPHPの設定も可能です。
いよいよ PHPUnit の設定です。
Preference の Languages & Frameworks > PHP > Test Frameworks を選択します。
初めての時には、左側のリストには Nothing to show と表示されていると思います。そこで左上の [+] ボタンをクリックします。
ここでは PHP Unit Local を選択します。もちろんリモートの指定もできます。
PHPUnit library の項目では、ラジオボタンでは、Path to phpunit.phar を選択します。そしてその下にあらわれる Path to phpunit.phar の欄では、phpunit の実行ファイルを指定しますが、そこでは bin/phpunit
は指定せずに、bin/.phpunit-x.x-x/
(x.x-x
はバージョン番号)の下にある phpunit
を指定します。
(Mac でファイルダイアログを使って指定する時には、.phpunit
が隠しファイルなので表示されませんが、[⌘] + [Shift] + [.] で表示されるようになります)
ここで bin/phpunit
を指定した時に、僕の場合は、PHPStorm が勝手に PHPUnit をアップグレードして、.phpunit
ディレクトリに2つのバージョンがインストールされることになってしまいました。
なんだか気持ち悪いので、上記のような設定にされることをおすすめします。
Test Runner の項目では Default configuration file にチェックを入れて、その右の欄でファイルを指定します。指定するファイルは、さきほどコピーした phpunit.xml
を指定します。
テストを始めよう
以上で、PHPStorm 上でテストができる環境が整いました。PHPStorm では、テストメソッドの先頭の左側のマークをクリックすると、そのテストメソッドを実行できる他、プロジェクトペインの中でも tests
ディレクトリの上や、そこに所属するディレクトリやテストクラスのファイルの上で右クリックから、テストが実行できます。
簡単にテストできる環境を整えてテスト駆動開発を実践しましょう。