テストカバレッジの可視化
GitLab 12.9で導入されました。
GitLabCI/CDの助けを借りて、お気に入りのテストツールやカバレッジ分析ツールのテストカバレッジ情報を収集し、マージリクエスト(MR)のファイル差分ビュー内でこの情報を可視化することができます。 これにより、MRがマージされる前に、どの行がテストでカバーされ、どの行がまだカバレッジを必要としているかを確認することができます。
テストカバレッジの可視化の仕組み
カバレッジ情報の収集はGitLab CI/CDのアーティファクトレポート機能を使って行います。 ワイルドカードパスも含め、収集するカバレッジレポートを1つ以上指定することができます。 GitLabはすべてのファイルのカバレッジ情報を取得し、それを結合します。
カバレッジ分析が機能するためには、適切にフォーマットされたCobertura XMLレポートをartifacts:reports:cobertura
に提供する必要があります。このフォーマットはもともと Java 用に開発されたものですが、他の言語用のカバレッジ分析フレームワークの多くには、このフォーマットをサポートするプラグインがあります:
- シンプルコフ・コベルチュラ(Ruby)
- gocover-cobertura(Golang)
例えば、他のカバレッジ分析フレームワークは、このフォーマットをすぐにサポートしています:
一度設定すると、カバレッジレポートを収集するパイプラインをトリガーするマージリクエストを作成した場合、カバレッジは差分ビューに表示されます。 これには、パイプラインのどのステージのどのジョブのレポートも含まれます。 カバレッジは各行に表示されます:
-
covered
(緑): テストで少なくとも一度チェックされた行 -
no test coverage
(オレンジ): 読み込まれたが実行されなかった行 - カバレッジ情報なし:計測不能またはロードされていないライン
カバレッジバーにカーソルを合わせると、その行がテストでチェックされた回数などの詳細情報が表示されます。
テストカバレッジの設定例
次のgitlab-ci.yml
の例では、MochaJavaScript テストとNYCカバレッジツーリングを使ってカバレッジのアーティファクトを生成しています:
test:
script:
- npm install
- npx nyc --reporter cobertura mocha
artifacts:
reports:
cobertura: coverage/cobertura-coverage.xml
機能を有効にする
この機能は、:coverage_report_view
機能フラグがデフォルトで無効になっています。この機能は、非常に大きなデータセットに対するパフォーマンスの問題があるため無効になっています。パフォーマンスの問題が解決されると、この機能はデフォルトで有効になります。
この機能を有効にするには、RailsコンソールにアクセスできるGitLab管理者に以下のコマンドを実行してもらいます:
Feature.enable(:coverage_report_view)