Simple cov gem missing untested files in Rails

Eager load the whole Rails app when running tests suite with code coverage. Add Rails.application.eager_load! to spec_helper.rb.

Simplecov slows down tests that's why I use shell environment variable to turn it on. Usually my spec_helper.rb/rails_helper.rb looks something like this:

if ENV['COVERAGE']
  require 'simplecov'
  # some SimpleCov setup, e.g. formatters
  SimpleCov.start 'rails'
end

ENV['RAILS_ENV'] ||= 'test'
require 'spec_helper'
require File.expand_path('../../config/environment', __FILE__)
require 'rspec/rails'

Rails.application.eager_load! if ENV['COVERAGE']

Since version 0.11.0 the files that should be tracked can be explicit set (Pull Request).

For a Rails app that would be:

require 'simplecov'
SimpleCov.start do
  track_files '{app,lib}/**/*.rb'
end

Or simple use:

require 'simplecov'
SimpleCov.start 'rails'

And the files to be tracked will be set by default (current related code).


Try to edit your config/environments/test.rb and set this line:

config.eager_load = false

to true in this way the whole app is loaded and simplecov reads it.