【问题标题】:SimpleCov :: Periodic Coverage ReportSimpleCov :: 定期覆盖报告
【发布时间】:2014-02-05 07:01:46
【问题描述】:

我有一个要求,到目前为止我需要得到覆盖。 如果我停止服务器,则会生成报告,并且到目前为止我确实得到了覆盖范围。但是如果我再次启动服务器,我之前的覆盖结果就会丢失,我只能在服务器重启后才能得到覆盖。

我有没有办法在不停止服务器的情况下定期检查覆盖率?

如果我尝试在不启动服务器的情况下生成报告,通过在 rails 控制台(SimpleCov.result.format!)中使用以下命令,我没有得到任何覆盖数字。

以下是我在 config/boot.rb 中的配置:

require 'simplecov'
SimpleCov.start 'rails' do
add_filter "/vendor/"
end

请分享你的想法 谢谢 拉姆亚

这是我的 boot.rb 的内容:

require 'simplecov'

# # create coverage directory if it doesn't exist already.
 Dir.mkdir("coverage") unless Dir.exist?("coverage")

 SimpleCov.start 'rails' do
        SimpleCov.use_merging(true)
   add_filter "/vendor/"
   SimpleCov.merge_timeout 30
 end


require 'rubygems'

# Set up gems listed in the Gemfile.
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)

require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])

【问题讨论】:

    标签: ruby code-coverage simplecov


    【解决方案1】:

    SimpleCov 正常工作的先决条件记录在此:SimpleCov 入门。在Rails 加载代码之后,您必须在boot.rb 文件中包含SimpleCov 相关代码。这是错误的。将所有代码提升到顶部,SimpleCov.result.format! 方法将在控制台中运行。

    但是,在boot.rb 中包含任何额外代码通常不是一个好主意。通常,只有在测试环境中才需要覆盖率报告(当代码被提交并且像 Travis 这样的持续集成服务器运行完整的测试套件并生成覆盖率报告时)。因此,文档引用了这种设置风格,其中与 SimpleCov 相关的所有内容都在 test 环境中运行。 Getting Started 部分中的第一个主题提到您需要在 test_helper 文件(如果您使用 Rspec 时为 spec_helper.rb)开头有 SimpleCov.start 行,因为这是加载 Rails 环境的文件;这意味着您最终会在加载实际应用程序代码之前加载 SimpleCov 及其配置,并且您会得到正确的输出。

    【讨论】:

    • 感谢 Kashyap 的回复 - 当我停止服务器时,我确实得到了正确的结果。但如果我只是给出“SimpleCov.result.format!”在 Rails 控制台中(当服务器仍在运行时) - 我没有得到正确的数字。如何在不停止 rails 服务器的情况下获得覆盖号码(到目前为止)?
    • 您的SimpleCov.start {...} 文件中的SimpleCov.start {...} 块在哪里?在顶部还是底部?
    • 请在描述中找到我的boot.rb的全部内容
    • 啊!确保在测试环境(或生产模式)中运行服务器和控制台。否则,它将生成加载到内存中的文件的覆盖率报告。在开发模式下,如果您运行 rails 控制台,它将仅加载特定于控制台的文件,而不是整个框架。在测试和生产环境中,整个框架被加载到内存中。
    • 使用RAILS_ENV=test bundle exec rails serverRAILS_ENV=test bundle exec rails console
    【解决方案2】:
    require 'simplecov'
    SimpleCov.start do
        coverage_dir  "custom-coverage_"+Time.now.strftime("%m_%d_%Y").to_s
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-22
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2020-08-12
      • 1970-01-01
      相关资源
      最近更新 更多