概要
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