Ruby on rails 简单cov gem在Rails中缺少未测试的文件

Ruby on rails 简单cov gem在Rails中缺少未测试的文件,ruby-on-rails,simplecov,Ruby On Rails,Simplecov,在Rails应用程序中使用simple\u covgem,我们可以在报告中包含未测试的文件吗 如果是,如何进行 如果没有,这些文件应该计入覆盖率,对吗 尝试编辑您的配置/environments/test.rb并设置此行: config.eager\u load=false 通过这种方式加载整个应用程序,simplecov读取它。当运行代码覆盖率的测试套件时,立即加载整个Rails应用程序。 添加Rails.application.eager\u加载至spec\u helper.rb Simp

在Rails应用程序中使用
simple\u cov
gem,我们可以在报告中包含未测试的文件吗

  • 如果是,如何进行

  • 如果没有,这些文件应该计入覆盖率,对吗


尝试编辑您的
配置/environments/test.rb
并设置此行:

config.eager\u load=false


通过这种方式加载整个应用程序,simplecov读取它。

当运行代码覆盖率的测试套件时,立即加载整个Rails应用程序。 添加
Rails.application.eager\u加载
spec\u helper.rb

Simplecov减慢了测试速度,这就是为什么我使用shell环境变量来打开它。通常我的
spec\u helper.rb
/
rails\u helper.rb
看起来像这样:

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']

从版本0.11.0开始,应该跟踪的文件可以显式设置()

对于Rails应用程序,它将是:

需要“simplecov”
SimpleCov.start do
跟踪_文件“{app,lib}/***.rb”
结束
或简单使用:

需要“simplecov”
SimpleCov.start“rails”

默认情况下,将设置要跟踪的文件()。

如果运行整个spec文件夹,则报告将显示每个控制器、助手和模型覆盖率。对于任何特定的测试,它只显示测试覆盖率。使用minitest,即使在运行整个测试文件夹时也不这样做。这是首选解决方案,imho修复了问题。这为我解决了问题。我遇到了与@koen相同的问题。有人知道之后的解决方法吗?我正在运行Minitest,它让我的覆盖率从73.xx%跃升到85.xx%,只是为了增加负载。这有点好笑。但要点是simplecov考虑了在加载阶段运行的所有代码。因此,我们项目中的任何文件都不再具有0%的覆盖率。我认为这不是一个期望的行为。实际上比公认的答案要好,因为在没有覆盖的情况下进行测试时,这不会影响性能。