【问题标题】:SimpleCov with Selenium/Rails带有 Selenium/Rails 的 SimpleCov
【发布时间】:2012-05-11 16:50:29
【问题描述】:

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

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

非常感谢任何帮助!

【问题讨论】:

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


    【解决方案1】:

    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 的忠实粉丝 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    相关资源
    最近更新 更多