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

时间:2012-03-09 01:46:56

标签: ruby selenium-webdriver minitest

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

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

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

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

5 个答案:

答案 0 :(得分:3)

我认为您的意思是提供“快速失败”选项。我找到了fail_fast for minitest (Test::Unit): Immediate backtrace & exit文章,但这已经过时了(仍然涵盖了可以做的事情)。我认为你需要monkeypatch你的测试库来启用这个选项。我发现了一个Gist,展示了add a simple fail-fast option to minitest/turn/minitest-rails如何让你走上正轨。我理解你的问题与我引用的第一篇文章有​​关:

  

当我在Ruby on Rails 3项目中运行Test :: Unit套件时   rake test并且测试失败,默认行为就是   打印“F”或“E”,继续运行直到所有测试完成(同时   我扭动了我的拇指),然后才打印出一堆痕迹。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

您可以使用 async function test(){ var length = 3; for(var a=0; a<length; a++){ var link = 'https://'+hostname+'/'; var apiUrl = 'api/xxx'; var token = "123"; let res = await axios.create({ baseURL: link, timeout: 60000, headers: { Authorization: token } }).post(apiUrl, { ... }); /* Do whatever you need with res */ } window.location.replace("https://"+hostname+"/abc"); } gem,这样,只要出现问题,您的测试就会启动撬动会话。您要做的就是将gem添加到您的Gemfile中:

pry-rescue

然后使用以下标志启动测试:

group :development, :test do
  gem 'pry-rescue'
end

答案 4 :(得分:0)

使用-f

按照您的要求,在纯红宝石中,这意味着ruby <file> -f

在轨道中,这表示rails test -f

Minitest将检查终端的-f标志参数,因此您如何调用它似乎与-f标志无关。