LoginSignup
6

More than 1 year has passed since last update.

【Rails】 SimpleCovの概要・導入・オプション

Last updated at Posted at 2021-02-10

はじめに

「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)

Gemfile
gem 'simplecov', require: false, group: :test

②spec/spec_helper.rbの一番上の部分に以下を追加

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
image.png

オプションの設定

ここからは、オプションの設定について説明していきます。

①フィルター

計測対象から指定したファイル名を含むファイルを除外する
導入方法の②で追加したSimpleCov.startにブロックでオプションの設定を渡していきます。

spec/spec_helper.rb
SimpleCov.start do
 add_filter "/test/" #testを含むファイルが計測対象から除外される
end

②グループ化

計測結果を指定した内容でグループ化し、タブに分けて表示する
(グループ化していないものはUngroupedというタブとなる)
導入方法の②で追加したSimpleCov.startにブロックでオプションの設定を渡していきます。

spec/spec_helper.rb
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に下記コードを追加する)

circleci/config.yml
- store_artifacts:
   path: coverage

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
What you can do with signing up
6