概要
MacOS上のLaravelのプロジェクトのコードカバレッジをHTML形式で出力します。
Laravelでプロジェクトが作成されており、PHPUnitが実行可能な状態を前提としています。
Xdebugのインストールについても手順を記載しています。
手順自体は簡単ですが、Xdebugのインストールで迷うことがあったので、メモとして記事にしています。
環境
- Mac OS X Sierra 10.12.6
- Laravel5.6
- PHPUnit7.0
手順
composer.jsonのscript
カバレッジを出力するためのコマンドをcomposer.jsonのscriptに追加します。
カバレッジの結果がHTML形式でcoverage
ディレクトリに出力されるように修正しています。
"scripts": {
・・・
"test:coverage": "phpunit --coverage-html coverage"
}
phpunit.xml
Laravelにより作成された初期状態のphpunit.xml
では、/app
以下が全てテストの対象となっています。
テスト対象の絞り込みを行いたい場合、phpunit.xml
の以下の部分を修正する必要があります。
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
例えば、/app/models
の配下のみテストしたい場合は、以下のようになります。
設定の詳細は、公式ガイドを確認してください。
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app/models</directory> ここを変更!
</whitelist>
</filter>
カバレッジの出力
以下のコマンドを実行すると、coverage
にカバレッジの結果が出力されていることを確認できます。
$ composer test:coverage
もし以下の通りXdebug
がないとエラーが表示された場合は、Xdebug
をインストールする必要があります。
Error: No code coverage driver is available
ここから下は、Xdebug
をインストールする手順となります。
Xdebugをインストールする
Xdebug
は、PHPUnit
に組み込まれているのではなく、PHPのエクステンションとして公開されているデバッグ支援ツールです。
https://xdebug.org/download.php からXdebug
のインストールが可能です。
以下のXdebugのサイトに必要な情報を入力することで、インストールするバージョンと手順について表示されるので、
以降はこれに従ってインストールを進めていきます。
Tailored Installation Instructions
上記のページを表示して、以下のコマンドで表示された内容を貼り付け、Analyse my phpinfo output
ボタンをクリックします。
$ php -i
すると、インストールの手順が表示されるので、手順にしたがってインストール作業を進めます。
今回は、xdebug-2.6.1.tgzをインストールします。
ダウンロードしたファイルを適当なディレクトリで解凍します。以下のコマンドで解凍できます。
$ tar -xvzf xdebug-2.6.1.tgz
解凍したディレクトリに移動します。
$ cd xdebug-2.6.1
以下のコマンドを実行し、configure
スクリプトを生成します。
$ phpize
以下のエラーが表示された場合は、 autoconf
のインストールが必要です。
Cannot find autoconf.
Please check your autoconf installationand the $PHP_AUTOCONF environment variable is set correctly and then rerun this script.
brewでautoconf
をインストールして、エラーメッセージに表示されている通りに、環境変数を設定します。
$ brew install autoconf
$ export PHP_AUTOCONF=/usr/local/Cellar/autoconf/2.69/bin/autoconf
再び、以下のコマンドを実行します。
$ phpize
configure
が作成されたので、以下を実行します。
$ ./configure
以下のコマンドを実行すると、modules
ディレクトリにxdebug.so
が作成されます。
$ make
作成されたxdebug.so
をPHPのextensionsディレクトリに移動します。
extensionsディレクトリは、Tailored Installation Instructionsの手順に表示されているので
環境に合わせて変更してください。
$ cp modules/xdebug.so /usr/lib/php/extensions/no-debug-non-zts-20160303
/etc/php.ini
に以下を追加します。
xdebug.soのパスは、環境に合わせて変更してください。
zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
確認のために、以下のコマンドを実行します。
$ php -v
PHP 7.1.16 (cli) (built: Mar 31 2018 02:59:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
Xdebugがインストールされていることが確認できました!
以下のコマンドを実行すると、coverage
にカバレッジの結果が出力されていることを確認できます。
$ composer test:coverage