Posted about 1 month ago. Visible to the public.

How to use Simplecov to find untested code in a Rails project with RSpec and Cucumber

Simplecov is a code coverage tool. This helps you to find out which parts of your application are not tested.

Integrating this in a rails project with rspec, cucumber and parallel_tests is easy.

  1. Add it to your Gemfile and bundle

    Copy
    group :test do gem 'simplecov', require: false end
  2. Add a .simplecov file in your project root:

    Copy
    SimpleCov.start 'rails' do # any custom configs like groups and filters can be here at a central place end

    Note that we're using a predefined profile called rails which will group your models, controllers etc. in different tabs. You can also create your own profiles or use no profile at all.

    Optional: Enable "Branch Coverage" by adding enable_coverage :branch on Ruby 2.5+ projects to make Simplecov check if all possible branches of a condition have been hit.

  3. Require in your features/support/env.rb for cucumber (important: require it before anything else, especially rails!):

    Copy
    require 'simplecov' SimpleCov.command_name 'features' + (ENV['TEST_ENV_NUMBER'] || '') # remove the TEST_ENV_NUMBER part if you don't use parallel_tests # ...
  4. Require it in spec/spec_helper.rb for rspec (important: require it before anything else, especially rails!)

    Copy
    require 'simplecov' SimpleCov.command_name 'specs' + (ENV['TEST_ENV_NUMBER'] || '') # remove the TEST_ENV_NUMBER part if you don't use parallel_tests # ...
  5. Run your tests (rspec and cucumber)

  6. At the end of the testrun you should see something like Coverage report generated for features, features2, features3, features4, specs, specs2, specs3, specs4 to /home/<user>/<my-project>/coverage.

  7. (optional): add coverage/* to your project's .gitignore

  8. Open the file with your browser: xdg-open coverage/index.html
    You should see a table like the one in the documentation.

  9. Sort the table by "lines missed" to find the blind spots

By refactoring problematic code and creating automated tests, makandra can vastly improve the maintainability of your Rails application.

Owner of this card:

Avatar
Judith Roth
Last edit:
29 days ago
by Arne Hartherz
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Judith Roth to makandra dev
This website uses cookies to improve usability and analyze traffic.
Accept or learn more