You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用RSpec::Core::Runner.run执行带标签测试失败问题咨询

解决RSpec::Core::Runner.run执行focus标签测试被过滤的问题

问题重现

可以通过RSpec::Core::Runner.run正常执行单个测试文件:

args = %w(-r spec_helper --order defined --format CustomFormatter --format documentation ./spec/Tests_spec.rb)
RSpec::Core::Runner.run(args)

但执行带:focus => true标签的测试时,所有用例被过滤:
测试用例:

it "example I'm working now", :focus => true do; end

执行代码:

args = %w(-r spec_helper --order defined --format CustomFormatter --format documentation --tag focus)
RSpec::Core::Runner.run(args)

输出:

Run options: include {:focus=>true}

All examples were filtered out

原因及解决方案

核心原因

你的执行参数中没有指定要扫描的测试文件或目录,RSpec不知道去哪里查找带:focus标签的测试用例,因此找不到匹配的用例,提示全部被过滤。

解决方案1:添加测试文件/目录路径

在args数组末尾添加测试文件路径或者spec目录路径即可:

  • 执行指定文件中的focus测试:
args = %w(-r spec_helper --order defined --format CustomFormatter --format documentation --tag focus ./spec/Tests_spec.rb)
  • 执行整个spec目录下的focus测试:
args = %w(-r spec_helper --order defined --format CustomFormatter --format documentation --tag focus ./spec)

解决方案2:优化spec_helper配置(可选)

如果你经常需要运行focus标签的测试,可以在spec_helper.rb中添加自动匹配配置,这样无需每次手动加--tag focus参数:

RSpec.configure do |config|
  # 当存在focus标签时,只运行带focus的用例;没有focus标签时运行所有用例
  config.filter_run_when_matching :focus
end

之后执行时只需指定文件/目录即可,无需额外的tag参数:

args = %w(-r spec_helper --order defined --format CustomFormatter --format documentation ./spec/Tests_spec.rb)
RSpec::Core::Runner.run(args)

内容的提问来源于stack exchange,提问作者kroe761

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:21:36