SimpleCov ::定期覆盖率报告

时间:2014-02-05 07:01:47

标签: ruby code-coverage simplecov

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

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

如果我尝试在不启动服务器的情况下生成报告,请使用以下命令,在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'])

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

require 'simplecov'
SimpleCov.start do
    coverage_dir  "custom-coverage_"+Time.now.strftime("%m_%d_%Y").to_s
end