【问题标题】:can I run SimpleCov in webrick?我可以在 webrick 中运行 SimpleCov 吗?
【发布时间】:2012-09-19 01:52:42
【问题描述】:

我有一个 Rails 应用程序和一个测试人员,他正在开发一个用 Java 编写的基于 Selenium 的外部测试系统。我们想知道他的测试套件当前的代码覆盖率,所以我想在我的 :development 环境中使用 SimpleCov,然后让他将他的测试套件指向它。

我尝试将 SimpleCov 行放在 env/development.rb 的顶部,但它只创建了 ./coverage 目录,它实际上并没有更新我在应用程序中尝试的任何点击的覆盖率报告。我想如果我退出 webrick 可能会写出来,但仍然没有。

SimpleCov 可以做到这一点吗? (或 Ruby 中的任何其他覆盖工具?)如何?

【问题讨论】:

    标签: ruby-on-rails ruby selenium code-coverage


    【解决方案1】:

    我通过以下方式在 Rails2 下工作(但 Rails3 应该不会有太大不同):

    将以下行添加到config/environments/development.rb 的顶部:

    require 'simplecov'
    
    # clean the existing coverage directory before writing the new results.
    Dir.foreach("coverage") do |file|
      next if [".",".."].include?(file)
      FileUtils.rm_rf(File.join("coverage",file), :verbose=>true)
    end
    
    SimpleCov.start 'rails' do
      add_filter "/vendor/"
    end
    

    现在,去为你的一个控制器添加一个方便的控制器方法(我将它添加到一个管理控制器,所以我知道它不会被意外调用,但任何事情都会做,因为你只是保护它以供开发使用) :

    class Admin::DebugController < ApplicationController
    
      if RAILS_ENV=="development"
        # see config/environments/development.rb
        def coverage
          SimpleCov.result.format!
          render :text => "Wrote results. STOP AND RESTART THE SERVER TO BEGIN A NEW COVERAGE RUN!!"
        end
      end
    
    end
    

    现在,正常启动您的 Rails 服务器并让您的外部测试套件针对它运行(或您的手动集成 QE 测试器;)

    完成集成测试后,点击您在管理控制器中设置的网址,例如

    http://localhost:3000/admin/debug/coverage
    

    注意:此网址仅在开发中有效/存在!

    瞧!覆盖率报告将写入您的 rails 目录中的coverage/**。您可以通过在浏览器中加载coverage/index.html 来查看它。

    理由

    虽然 SimpleCov 的正常用法是用于单元和功能测试,但添加评估外部集成测试的能力可以为 QE 测试人员提供有价值的反馈,了解他们的测试策略实际上在目标 Rails 应用程序中测试的内容。

    对于大多数 Rails 应用程序来说,这可能是一个微不足道的区别,但是当应用程序作为“传递”来处理来自其他应用程序的大量数据并动态混合到应用程序模型中时(例如例如,仪表板或控制台应用程序)。在这些类型的应用程序中,rails 测试人员可能认为他们正在测试应用程序的排列,而实际上他们正在测试底层数据(例如网络集群)的排列。在这种情况下,代码覆盖率提供了对正在测试的内容的额外可见性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 2017-02-04
      • 2016-09-22
      • 2017-04-18
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多