我遇到了与列出的问题几乎相同的问题(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
答案 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