4

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

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

非常感谢任何帮助!

4

1 回答 1

5

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、单击并退出服务器来获得本地手动基于浏览器测试的代码覆盖率,例如,如果您想知道应用程序的哪个部分执行某个操作真的很感动。

于 2012-05-11T08:50:29.360 回答