【问题标题】:In Rails, can you ignore specific tests from running?在 Rails 中,您可以忽略运行中的特定测试吗?
【发布时间】:2015-08-18 16:21:55
【问题描述】:

我有一套正在运行的测试,但想忽略一些本地测试,因为它们需要不同的 Java 版本,并且在我的环境中始终失败。我可以忽略这些测试(无论如何我们都有集成测试)

如何指定 Rails 不运行某些测试而运行所有其他测试?我只是厌倦了看到错误,它可能会导致我错过一些合法的测试失败......

任何帮助将不胜感激!

【问题讨论】:

  • 您使用的是哪个测试框架?
  • 抱歉,Ryan,这是针对 RSpec 的,也希望只为我的本地环境执行此操作(因为我们的测试在源代码控制中)

标签: ruby-on-rails-3 rspec


【解决方案1】:

在 RSpec 中,可以使用排除过滤器,然后从命令行跳过特定测试。

在您的情况下,将描述块标记为java: true

describe "code for JVM in production", java: true do
  it "java-specific test" do
  end
end

然后运行rspec . --tag ~java:true RSpec 将忽略/跳过匹配java: true 标签的测试。

注意:不需要将其他测试设置为java: false

或者,您可以使用配置修改您的 spec_helper.rb,以便在使用环境变量在本地运行时跳过这些测试。

RSpec.configure do |c|
  if RUBY_PLATFORM.include?('darwin') # assumes Macintosh
    c.filter_run_excluding java: true
  end
end

引用:

【讨论】:

  • 感谢@scarver2,但我希望在本地执行此操作,因为我们的测试都在源代码控制中,知道如何忽略本地机器中的测试吗?
  • @MarkKadlec 感谢您提供更多信息。我完全改变了我的答案以迎合 RSpec。 RSpec 提供了一个很好的机制来跳过匹配特定标签的测试。
  • 这是一个很好的答案,谢谢,我要实现 spec_helper.rb 方法!
【解决方案2】:

describecontext 块中使用ifunless 条件。

@scarver2 的回答真的很棒,我只是想添加一个更轻量级的替代方案。

您还可以在describecontext 块中使用ifunless 条件,例如:

describe "code for JVM in production", unless: RUBY_PLATFORM.include?('darwin') do
  it "java-specific test" do
  end
end

【讨论】:

    猜你喜欢
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2020-12-28
    • 1970-01-01
    • 2017-12-01
    • 2012-10-06
    • 2013-02-24
    相关资源
    最近更新 更多