SimpleCovでHelperのカバレッジが測定されない

環境

  • Rails 5.2.3
  • Rspec 3.8.0
  • simplecov 0.16.1

事象

ApplicationHelperのspecを書いてrspecを実行したところ、Helperのカバレッジが0%になっていた。他のファイルのカバレッジは測定されていた。Rspecの実行ログから、ApplicationHelperのspecが実行されていることは確認できている。

原因

SimpleCov.start を rails_helper.rb の先頭に書いてなかったのが原因だった。
ドキュメントにも太文字でtopだと書いてあった。

Similarly to the usage with Test::Unit described above, the only thing you have to do is to add the SimpleCov config to the very top of your Cucumber/RSpec/whatever setup file.
Add the setup code to the top of features/support/env.rb (for Cucumber) or spec/spec_helper.rb (for RSpec).

https://github.com/colszowka/simplecov#use-it-with-any-framework

対処

SimpleCov関連の設定処理は spec/support/simplecov.rb にまとめていて、 Dir[Rails.root.join(‘spec/support/**/*.rb’)].each { |f| require f } で実行していたが、rails_helper.rb の先頭で require ‘./spec/support/simplecov’ を実行するようにしたらApplicationHelperのカバレッジが測定されるようになった。

メモ

SimpleCovはstartメソッドの中でRuby標準ライブラリのCoverage.startを実行している。Helper(module)がCoverage.startの実行前に読み込まれてしまってカバレッジの測定対象に入っていなかったのだろうか。(未確認)