Question

Using simple_cov gem in a Rails app, can we have the files that we are not testing included in the report?

  • If yes, how?

  • If no, that files should count to the coverage percentage, right ?

Was it helpful?

Solution

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.

OTHER TIPS

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).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top