如何使minitest在失败时停止执行?

问题描述 投票:8回答:3

我使用Minitest作为我的功能测试的跑步者,使用Selenium作为运行浏览器的驱动程序。每个测试都建模为MiniTest :: Unit :: TestCase。

Minitest报告完成执行所有测试后的执行摘要。遇到的异常也会在执行结束时打印出来。当发现执行上下文丢失时,我发现很难调试意外失败。我遇到的例外不是确定性的。

有没有办法让Minitest运行器停止执行异常或断言失败的测试?

我使用的是minitest(2.11.2)和ruby 1.9.2p290(2011-07-09)[i386-mingw32]

ruby selenium-webdriver minitest
3个回答
3
投票

我认为你的意思是提供“快速失败”选项。我发现了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”,继续运行直到所有测试都完成(而我扭动我的拇指),然后打印出堆栈痕迹。


2
投票

当我回答here时,我发现了一个宝石:minitest-fail-fast。它适用于Rails 4.2和Minitest 5.6.1


2
投票

尝试rails test -f会做到这一点。这意味着中止第一次失败或错误的测试运行。


1
投票

它没有直接回答这个问题,但可能非常有用。

你可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.