我使用Minitest作为我的功能测试的跑步者,使用Selenium作为运行浏览器的驱动程序。每个测试都建模为MiniTest :: Unit :: TestCase。
Minitest报告完成执行所有测试后的执行摘要。遇到的异常也会在执行结束时打印出来。当发现执行上下文丢失时,我发现很难调试意外失败。我遇到的例外不是确定性的。
有没有办法让Minitest运行器停止执行异常或断言失败的测试?
我使用的是minitest(2.11.2)和ruby 1.9.2p290(2011-07-09)[i386-mingw32]
我认为你的意思是提供“快速失败”选项。我发现了fail_fast for minitest (Test::Unit): Immediate backtrace & exit文章,但这已经过时了(仍然涵盖了可以做的事情)。我认为你需要monkeypatch你的测试库来启用这个选项。我发现了一个Gist,展示了如何使用add a simple fail-fast option to minitest/turn/minitest-rails
,这样可以让你走上正轨。我理解你的问题与我引用的第一篇文章有关:
当我通过
rake test
在我的Ruby on Rails 3项目中运行Test :: Unit套件并且测试失败时,默认行为是只打印“F”或“E”,继续运行直到所有测试都完成(而我扭动我的拇指),然后打印出堆栈痕迹。
当我回答here时,我发现了一个宝石:minitest-fail-fast。它适用于Rails 4.2和Minitest 5.6.1
尝试rails test -f
会做到这一点。这意味着中止第一次失败或错误的测试运行。
它没有直接回答这个问题,但可能非常有用。
你可以使用pry-rescue
gem,这样你的测试就会在出现问题时启动一个pry会话。您所要做的就是将gem添加到您的Gemfile中:
group :development, :test do
gem 'pry-rescue'
end
然后使用以下标志启动测试:
PRY_RESCUE_RAILS=1 rails test rails test test/integration/agendas_test.rb