Ruby on rails 带Selenium/Rails的SimpleCov

Ruby on rails 带Selenium/Rails的SimpleCov,ruby-on-rails,selenium,code-coverage,Ruby On Rails,Selenium,Code Coverage,我们有一套硒测试。我想使用SimpleCov覆盖这些测试的服务器端覆盖。首先,这是一种常见的方法吗?我在SimpleCov/Selenium上找不到任何东西。也许SimpleCov通常用于单元/功能测试而不是集成 当前的Selenium设置需要启动rails服务器,而不是让一套Selenium测试来完成。我需要SimpleCov在rails服务器上运行,然后在套件完成后退出 非常感谢您的帮助 simplecov作者在这里。无论何时启动SimpleCov,它都会将覆盖率分析应用于当前正在运行的进程

我们有一套硒测试。我想使用SimpleCov覆盖这些测试的服务器端覆盖。首先,这是一种常见的方法吗?我在SimpleCov/Selenium上找不到任何东西。也许SimpleCov通常用于单元/功能测试而不是集成

当前的Selenium设置需要启动rails服务器,而不是让一套Selenium测试来完成。我需要SimpleCov在rails服务器上运行,然后在套件完成后退出


非常感谢您的帮助

simplecov作者在这里。无论何时启动SimpleCov,它都会将覆盖率分析应用于当前正在运行的进程。因此,您需要在Rails服务器进程内启动SimpleCov。我建议将SimpleCov设置作为条件添加到Rails应用程序的config/boot.rb(位于最顶端),如下所示:

# config/boot.rb
if ENV["SELENIUM"]
  require 'simplecov'
  SimpleCov.start 'rails'
end
在引导Rails测试服务器之前,设置该环境变量。一旦测试服务器关闭,您现在应该会收到覆盖率报告。如果您想将其移动到另一个目录,请查看配置选项,这样它就不会干扰您的常规(单元/功能)覆盖率报告

但是我不确定boot.rb是不是合适的地方。事实上,SimpleCov需要在应用程序中加载任何其他内容之前加载,否则它将无法跟踪这些文件的覆盖范围。您可能需要试验或查看rails引导过程以找到该位置,但是由于Bundler设置是boot.rb的一部分(如果我没记错的话…),将所述配置放在Bundler.setup之上应该可以


基本上,通过类似的设置,您甚至可以通过在服务器进程中启动simplecov,单击周围并退出服务器来获得本地基于浏览器的手动测试的代码覆盖率,例如,如果您想知道某个操作真正涉及到应用程序的哪个部分。

谢谢!SimpleCov的大粉丝:)