#はじめに
「SimpleCovって何?」っていう状態から導入をしましたので、調べたことについてまとめておきます。
全くSimpleCovについて知らない方が、個人開発や業務で導入して設定するまでの参考になれば幸いです。
ちなみに筆者は最近エンジニアとして働き出したレベルの者です。
#目次
#対象読者
・SimpleCovってそもそも何という方
・SimpleCovは知っているけど実際の導入の仕方を知りたい方
・導入はとりあえずできるけど、追加でどんなオプションがあるか知りたい方
#環境
- Ruby 2.7.2
- Rails 6.0.3
- rspec-rails 4.0.2
- simplecov 0.21.2
#そもそもSimpleCovとは
・Ruby用のコードカバレッジ分析ツール
(分かりやすく言うと、コードカバレッジを計測するためのgemです。)
[公式ドキュメント] https://github.com/simplecov-ruby/simplecov
SimpleCov is a code coverage analysis tool for Ruby.
#コードカバレッジとは何か
- テストの対象となるプログラムコードのうち、テストされたコードの割合(%で表示される)
余裕がある方向け
- コードカバレッジには、厳密には3つの種類がある(C0,C1,C2)
- C0(ステートメントカバレッジ):テストの対象となるプログラムコードのうち、命令文を実行した割合。
- C1(ブランチカバレッジ):テストの対象となるプログラムコードのうち、分岐の真/偽を実行した割合
- C2(改良条件判定カバレッジ):テスト対象となるプログラム中において、各ユニット内の条件・判定を網羅した割合
- そのうちSimpleCovが計測するコードカバレッジはC0(ステートメントカバレッジ)
調べる中でテストカバレッジとコードカバレッジの違いが分からない方向け
- コードカバレッジはテストカバレッジの一種
- テストカバレッジには、コードカバレッジ以外に機能カバレッジやデータカバレッジがある
#導入方法
###①Gemfileに以下を追加(→bundle insatll)
gem 'simplecov', require: false, group: :test
###②spec/spec_helper.rbの一番上の部分に以下を追加
require 'simplecov'
SimpleCov.start
#デフォルトで記載されている部分
RSpec.configure do |config|
.
.
end
#使い方
###①rspecを実行する
bundle exec rspec
###②出力されたcoverage/index.htmlをブラウザで開く
コードカバレッジの計測結果(下の画像のようなもの)が出ていればOK
[公式ドキュメントのサンプル画像] https://github.com/simplecov-ruby/simplecov
#オプションの設定
ここからは、オプションの設定について説明していきます。
###①フィルター
計測対象から指定したファイル名を含むファイルを除外する
導入方法の②で追加したSimpleCov.start
にブロックでオプションの設定を渡していきます。
SimpleCov.start do
add_filter "/test/" #testを含むファイルが計測対象から除外される
end
###②グループ化
計測結果を指定した内容でグループ化し、タブに分けて表示する
(グループ化していないものはUngrouped
というタブとなる)
導入方法の②で追加したSimpleCov.start
にブロックでオプションの設定を渡していきます。
SimpleCov.start do
add_group "Models", "app/models" #add_group "グループ化名", "グループ化したいパス"
add_group "Controllers", "app/controllers"
end
###③計測結果をCircleCIのARTIFACTSタブに表示
CircleCIでRspec実行後、CircleCI上のARTIFACTS
タブにcoverage/index.html
が含まれるようになる
(*これは、spec/spec_helper.rb
ではなくcircleci/config.yml
に下記コードを追加する)
- store_artifacts:
path: coverage