RSpecでテストを書いていると、こんな疑問が浮かんできませんか?
「このテスト、ちゃんとコードを網羅できてるの?」
テストを書いた気になっていても、実は重要な処理がテストされていない…
ということはよくあります。
そこで今回は SimpleCov というGemを使って、
テストのカバレッジ率(どれだけコードがテストされているか)を
可視化する方法をまとめました。
☆この記事でわかること☆
- SimpleCovの導入方法
- カバレッジレポートの見方
- カバレッジ率を上げるためのヒント
【ちょっと宣伝】こんなアプリを作っています。
ゲームx思い出を記録できるアプリ SaveData
SimpleCovとは?
SimpleCovはRuby用のコードカバレッジ計測ツールです。
RSpecと組み合わせることで、
テスト実行後に HTMLレポートを自動生成 してくれます。
こんな感じで表示されます。
- 全体のカバレッジ率(例: 87.5%)
- ファイルごとの詳細
- テストされていない行が赤くハイライト される
導入手順💻
① Gemfileに追加する
group :test do
gem 'simplecov', require: false
end
require: false をつけることで、必要なときだけ読み込む設定にします。
② bundle install
bundle install
③ spec/spec_helper.rb の先頭に追記する
⚠️ 必ず先頭に書きましょう。
他のrequireより後に書くと正しく計測されません。
# spec/spec_helper.rb の一番上
require 'simplecov'
SimpleCov.start 'rails'
# 以下、既存のコード
RSpec.configure do |config|
# ...
end
'rails' を引数に渡すことで、
テスト対象外のファイル(viewsやmigrationsなど)を自動で除外してくれます。
④ RSpecを実行する
bundle exec rspec
実行が完了すると、こんなメッセージが表示されます。
Coverage report generated for RSpec to /your_project/coverage/index.html.
87.5% covered.
⑤ レポートをブラウザで確認する
open coverage/index.html
今で71パーセント。これがどのくらいかというと最低限の水準くらいです。
カバレッジ率の目安
| 率 | 評価 |
|---|---|
| 〜60% | テストが足りていません |
| 60〜80% | 最低限の水準 |
| 80〜90% | よくできています |
| 90%〜 | 高品質なテスト体制 |
少なくとも80%以上 はカバーしたいところです。
レポートの見方
| 表示色 | 意味 |
|---|---|
| 緑 | テストされている行 |
| 赤 | テストされていない行 |
| グレー | コメントや空行(計測対象外) |
赤い行が多いファイルから優先的にテストを追加していくのが効率的です。
.gitignoreに追加する
coverage/ ディレクトリはGitで管理不要なので、忘れずに除外しましょう。
# .gitignore
/coverage
CIと組み合わせる(おまけ)
GitHub Actionsなどでテストを自動実行している場合、SimpleCovはそのまま動作します。
ローカルと同じ設定で計測されるので、特別な追加設定は不要です。
CIのログに xx% covered. と表示されるようになります。
SPECテストを除外したいファイルがある場合
.simplecov というファイルを作って除外設定する
SimpleCov.start 'rails' do
add_filter '/channels/'
add_filter '/jobs/'
add_filter 'app/controllers/users/omniauth_callbacks_controller.rb'
end
使用していないものもカバレッジテストの結果に出てしまうので
使ってないものに関しては除外もできます。
まとめ
| 手順 | 内容 |
|---|---|
| ① Gemfileに追加 | gem 'simplecov', require: false |
| ② bundle install | 依存関係をインストール |
| ③ spec_helper.rbに追記 |
先頭に require 'simplecov' と SimpleCov.start 'rails'
|
| ④ RSpec実行 | bundle exec rspec |
| ⑤ レポート確認 |
coverage/index.html をブラウザで開く |
やって良かったこと🌟
- テストが通っても「どこが漏れているか」が一目でわかるようになった
- 赤くハイライトされた行を見るだけで、次に書くべきテストがわかる
- ポートフォリオのテスト品質を数字で示せるようになった
導入コストがほぼゼロなのに、テストの質を上げる効果は大きいです。
ぜひお試しください。
最後までお読みいただきありがとうございました🙏
こんなアプリを作っています。よければ触ってみてください!
ゲーム × 思い出を記録できるアプリ SaveData

