1

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

有没有办法让我定期检查覆盖率 - 而不停止服务器?

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

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

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

请分享您的想法谢谢 Ramya

这是我的 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'])
4

2 回答 2

0

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

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

于 2014-02-06T08:10:31.807 回答
0
require 'simplecov'
SimpleCov.start do
    coverage_dir  "custom-coverage_"+Time.now.strftime("%m_%d_%Y").to_s
end
于 2018-09-06T11:16:56.347 回答