繁体   English   中英

我可以在webrick中运行SimpleCov吗?

[英]can I run SimpleCov in webrick?

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

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

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

通过执行以下操作,我在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测试人员可能认为他们正在测试应用程序的排列,而实际上他们正在测试基础数据(例如,网络集群)的排列。 在这种情况下,代码覆盖率使被测试的内容具有更高的可见性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM