2012-04-12 65 views
4

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

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

任何帮助非常感谢!

回答

4

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,单击并退出服务器来获取本地手动基于浏览器的测试的代码覆盖范围,例如,如果您想知道您的部分应用程序确实触及了某种行为。

+1

谢谢! SimpleCov的粉丝:) – phillee 2012-05-11 18:35:22