2

我是测试的忠实拥护者,当我运行我当前的覆盖率报告时,我注意到我的带有 .rb 文件的 lib 子文件夹没有被 simplecov 拾取。

这是我在 spec_helper.rb 文件中的设置:

if ENV['COVERAGE']
  require 'simplecov'
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
    SimpleCov::Formatter::HTMLFormatter
  ]
  SimpleCov.minimum_coverage 90
  SimpleCov.start do
    coverage_dir 'tmp/coverage'
    add_filter '/.bundle/'
    add_filter '/spec/'
    add_filter '/config/'
    add_group 'Models', 'app/models'
    add_group 'Controllers', 'app/controllers'
    add_group 'Services', 'app/services'
    add_group 'Helpers', 'app/helpers'
    add_group 'Lib', 'lib'
    add_group 'Mailers', 'app/mailers'
    add_group "Long Files" do |src_file|
      src_file.lines.count > 100
    end
    add_group 'Ignored Code' do |src_file|
      open(src_file.filename).grep(/:nocov:/).any?
    end
  end
end

虽然我今天在那个文件夹里没有太多东西,但我想弄清楚为什么他们没有进来。目前,我希望lib/modules在我的报告中看到我的文件夹 b/c 它有一个由 rake 使用的 helper_functions.rb 文件里面。

=> git 问题 #351

另外,我尝试了这些解决方案,但没有运气:

4

1 回答 1

7

我曾经遇到过类似的问题,结果发现在 SimpleCov 启动之前加载了一些未报告的代码。例如,如果您通过rake命令运行测试,如果您的 Rakefile 在调用 spec_helper.rb 脚本之前拉入一些库,则不会报告这些库。

于 2014-12-01T18:22:09.357 回答