テストカバレッジをHTMLレポートで出力 / phpdbg + php-code-coverage + PHPUnit


はじめに

PHPUnit をコマンド実行すると結果が質素なテキストで出力されます。
それはそれで問題ないのですが、ビジュアルでインパクトある出力ができると、チーム内で結果を共有する時に会話がしやすかったりなど、役立つことも多いと多いはずです。

そんな訳で、PHPUnit の実行結果を HTML で確認することができる手法はないかと調べていたら php-code-coverage なるものを見つけたので、以前構築したローカル開発環境に導入する手順をまとめてみました。

想定環境

本記事は以下の環境にて動作確認を行っています。

  • OS : Windows / macOS
  • 仮想環境 : VirtualBox + Vagrant
  • コンテナ : Docker Container by docker-compose 1
  • PHP
    • PHP 7.2.11
    • php-code-coverage 6.1.3
    • PHPDBG 7.2.11
    • PHPUnit 7.4.3

構築手順

概要

今回構築する環境は、 CentOS/7 の上に、 Docker をインストールし、その上で PHPUnit + phpdbg + php-code-coverage を使用してレポートを出力します。

手順

これから行う手順は、以下の記事で紹介した手順で構築した ローカル開発環境 をベースとして操作を行ってゆきます。
Windows / Mac を問わず簡単に構築が可能ですので、動作の再現を行いたい場合はそちらの記事を参照してください。

なお、上記の手順の中で PHPUnitphpdbg はインストール済みの為、Composerインストールが必要な php-code-coverage のインストールから操作を進めます。

1. CodeCoverage を Composer でインストール

php-code-coverage をインストールします。

@VirtualHost
// SebastianBergmann\CodeCoverage のインストール
$ docker-compose exec php composer require --dev phpunit/php-code-coverage

2. phpdbg をテスト実行

phpdbg を使用してテスト実行し、テストカバレッジを任意のフォルダに出力します。

@VirtualHost
// レポート出力
$ docker-compose exec phpdbg -qrr sample/vendor/phpunit/phpunit/phpunit --coverage-html sample/coverage-by-phpdbg

3. 出力結果の確認

出力されたフォルダ内の HTML ファイルを Webブラウザで確認することで、テストカバレッジを確認することが出来ます。

課題

  1. 導入は簡単にすることが出来ましたが、実際の開発プロジェクトで確認が出来ていません。
    参照した記事によると、バージョンによっては、実際のカバレッジと異なる結果が出力されてしまうケースもあるようなので、結果の評価には注意が必要です。

終わりに

想定していたよりも簡単に出力することができました。

近頃流行りの構成でお手軽かつ充実た開発環境を作ることを目的に、先日、「docker - ローカル開発環境の構築 / Laravel on Vagrant + VirtualBox with Docker - Qiita」という記事を記載しました。

この記事で導入した Laravel + AdminLTE を使用することで、簡単に管理画面の構築が出来たり、すぐに PHPUnit を実行する環境は整いました。

ここから更に、チーム開発する際に必要な Format機能CodeFix機能Xdebugを使用したトレースIDE(VSCode)と連携した効率的な開発プラグインの導入 などなど、チーム開発を意識して「イイ感じ」の環境を構築したいのですが、なかなかまとまった情報を掲載した記事がありません。

以下のような構成を前提に、もう少し充実した環境を構築してゆけたらと考えております。

  • OS : Windows / Mac
  • 仮想環境 : Vagrant + VirtualBox
  • コンテナ : Docker + docker-compose
  • 仮想OS : CentOS
  • Web : Apache / nginx
  • Application : PHP
  • Web Application Framework : Laravel, CakePHP
  • Database : MySQL, PostgreSQL
  • IDE : VSCode
  • DBManager : MySQL Workbench, A5M2, HeidiSQL

参考

Corverage

metrics