LoginSignup
1
0

Laravel + Xdebug でカバレッジレポートを確認する on Docker

Last updated at Posted at 2024-01-09

大まかな流れ

  1. Dockerfileにxdebug関連のライブラリをインスコする記述を書く
  2. オリジナルの ini ファイルに、xdebug 関連の設定を書く
  3. phpunit.xmlにレポート出力設定を書く
  4. コマンドを実行する

環境

  • Laravel 8.x
  • PHPUnit 9.x
  • Docker (and docker-compose)
  • Xdebug 3.1.x

仮想ディレクトリ構成

├── myapp -> Laravelプロジェクト
│   ├── app
│   ├── bootstrap
...
│   ├── tests
│       └── coverage
│   ├── phpunit.xml
│       
├── config
│   ├── xdebug.ini
├── Dockerfile

Dockerfile

FROM webdevops/php-nginx:8.0

# xdebug install
RUN pecl install xdebug && \
    docker-php-ext-enable xdebug

# xdebugに関する php.ini の設定ファイルをイメージに追加
ADD config/xdebug.ini /usr/local/etc/php/conf.d/custom.ini

php/conf.d に追加された .ini ファイルは、最終的に php.ini に合体されるので、ここに追記する xdebug に関する設定を書く。

xdebug.ini

[xdebug]
xdebug.client_host = host.docker.internal
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = 0
xdebug.client_port = 9005
xdebug.log=/tmp/xdebug.lo

phpunit.xml

<logging>
    <log type="coverage-html" target="tests/coverage" showUncoveredFiles="true"/>
</logging>

実行する

コンテナに入って、Laravelのプロジェクトルートディレクトリで以下を実行する。

XDEBUG_MODE=coverage php artisan test --coverage-html tests/coverage

以下でも可。

XDEBUG_MODE=coverage vendor/bin/phpunit --coverage-html tests/coverage

先頭に XDEBUG_MODE=coverage を追加しないとレポートが出力されないので注意。
tests/coverage はレポートの出力先ディレクトリなので任意の場所を設定する。

おわりに

これでカバレッジレポートが出力されます。

スクリーンショット 2024-01-09 17.09.16.png

1
0
1

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
1
0