TTIL

2022-01-12 C0/C1/C2カバレッジ / simplecovでブランチカバレッジを取る

C0/C1/C2カバレッジ

  • C0: 命令網羅(ステートメント・カバレッジ)
  • C1: 分岐網羅(ブランチ・カバレッジ)
  • C2: 条件網羅(コンディション・カバレッジ)

参考. いつも忘れてしまうC0/C1/C2カバレッジまとめ | モバイルアプリ開発情報

感覚としては、c0だとテストとして全然足りていない片手落ち感半端なくて、c1くらいは最低はカバーしたいかなという感じ。

c2 をどこまでやるかは議論が分かれそうだけど、基本はc1で重要なビジネスロジックは c2 までカバーする、くらいの方針が個人的に好き。

simplecovでブランチカバレッジを取る

Ruby 2.5 以上であれば simplecov でc1カバレッジを計測できるようになった。

https://github.com/simplecov-ruby/simplecov#branch-coverage-ruby--25

Rails 設定方法

SimpleCov.start 'rails' do
  enable_coverage :branch
end

ちなみに branch カバレッジを有効化しても、メインとなるカバレッジ手法は line coverage。

実際に有効化してみた

enable_coverage :branch だけでいけた。

Enable branch coverage by toshimaru · Pull Request #1361 · toshimaru/RailsTwitterClone