在rspec中重试失败的测试

时间:2018-04-11 18:59:12

标签: ruby testing rspec rake

我遇到了与列出的问题几乎相同的问题(Why is Rake not able to invoke multiple tasks consecutively?),但他们的解决方案对我不起作用!随着我的代码库的增长,我会定期得到假阴性,我很想重新运行失败的测试。 下面的行Rake::Task['test:example_1'].execute完成后会退出(并且不会点击byebyg / binding.pry)。

SPEC_PATH = 'spec/platform/**/*.rb'

namespace :test do

RSpec::Core::RakeTask.new('example_1') do |t|
  t.rspec_opts = ["-Ilib","--format documentation","--color --tty"]
  t.pattern = SPEC_PATH
end

RSpec::Core::RakeTask.new('example_2') do |t|
  t.rspec_opts = ["-Ilib","--format documentation","--color --tty", "--only-failures"]
  t.pattern = SPEC_PATH
end

desc 'Run "test" task, then rerun failed tests'
  RSpec::Core::RakeTask.new('rerun') do |t|
    Rake::Task['test:example_1'].execute
    Rake::Task['test:example_2'].execute
  end
end

--dry-run包含到test:example_1将同时运行,但很明显,不会生成任何失败,因此无效。是否需要设置配置以防止在完成时退出?如果是的话,我一直都找不到。

感谢。

*编辑: 在我的执行显示中包括--trace

** Invoke test:rerun (first_time)
** Execute test:rerun
** Execute test:test_1

一开始,但退出时没有。

**编辑:这是另一个我正在尝试做的事情的例子,就像我试图做的那样(https://sourcediving.com/a-better-way-to-tame-your-randomly-failing-specs-29040dc0ed24)。 值得一提的是,我正在运行Ruby 2.3.1和RSpec 3.6

1 个答案:

答案 0 :(得分:0)

我发现了答案。我需要向任务t.fail_on_error = false传递一个额外的参数。我曾假设这涉及到个人的期望,但事实上,它指的是整个任务。

所以,对代码的唯一更改是:

RSpec::Core::RakeTask.new('example_1') do |t|
  t.rspec_opts = ["-Ilib","--format documentation","--color --tty"]
  t.fail_on_error = false
  t.pattern = SPEC_PATH
end