Basic TDD in Rails : Configuring SimpleCov Test Coverage Gem


Learn how to use SimpleCov gem to generate test coverage report.


Why do we need a coverage report tool when we know that our test coverage will be 100% when we write test first? In a real-world Rails app, you will have gems, Rails engines and other third-party libraries that you need to customize. This can lead to gaps in your test coverage. By running the test coverage reports before you checkin the code, you can write tests for the code with no coverage.


Step 1

Add simplecov gem to the test group.

gem 'simplecov', :require => false

I have also cleaned up the other gems like this:

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'

  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'
  gem 'rspec-rails', '~> 3.2'

group :test do
  gem 'capybara' 
  gem 'selenium-webdriver'
  gem 'database_cleaner'
  gem 'simplecov', :require => false

This now separates all the test related gem from the development and test group. I have also changed the rspec-rails version to 3.2.

Step 2


$ bundle

Step 3

Add the lines:

require 'simplecov'

to the top of the spec_helper.rb file.

Step 4

Run :

$ rake spec

This will run all your tests.

Step 5

Open the coverage/index.html in a browser. You can see we have 99.32 % test coverage. For some reason it thinks rails_helper.rb configuration for database_cleaner is not covered. To fix this change the top two lines in the spec_helper.rb to :

require 'simplecov'
SimpleCov.start 'rails'

Now the test coverage will be 100%.


In this lesson we installed and configured simple_cov gem to generate test coverage reports. You also learned why we need to use a test coverage tool in our projects.

Related Articles

Create your own user feedback survey