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