我们的 MiniTest::Spec 测试套件中有一些测试在每个测试目录单独运行时通过,但在整个套件运行时失败。
与其花几个小时试图找出失败的原因,我认为在它自己的 TestTask 实例中运行每个测试目录会更容易,如下所示:
Dir.new('spec').each do |f|
next if f.start_with? '.'
if File.directory? File.join('spec', f)
Rake::TestTask.new('test') do |t|
t.libs << "app" << "spec"
t.test_files = FileList["spec/#{f}/*_spec.rb"]
t.verbose = true
end
end
end
但是,这会导致每个目录中的测试“并行”运行。TestTask.new 似乎在一个单独的线程中执行每个测试(尽管我还没有弄清楚为什么)。
有什么办法可以避免这种行为?我希望每个目录按顺序运行,因为没有这个我会遇到“堆栈太深”的错误。
谢谢!