如何在失败时使最小停止执行



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

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

有没有一种方法可以让Minitest运行程序在异常或断言失败时停止执行测试?

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

try rails test -f会执行此操作。这意味着中止第一次失败或错误的测试运行。

我认为您的意思是提供一个"快速失败"选项。我找到了fail_fast for minitest(Test::Unit):立即回溯&退出文章,但这已经过时了(仍然涵盖了可以做的事情)。我认为您需要对您的测试库进行monkeypatch才能启用此选项。我发现了一个Gist,展示了如何在minitest/turn/minitest-rails中添加一个简单的故障快速选项,这样可能会让你走上正轨。我知道你的问题与我引用的第一篇文章有关:

当我在RubyonRails 3项目中运行Test::Unit套件时rake test并且测试失败,默认行为是打印"F"或"E",保持运行直到所有测试完成(同时我转动大拇指),然后才打印出堆栈轨迹。

当我在这里回答时,我发现了一个宝石:最微小的失败速度。它可与Rails 4.2和Minitest 5.6.配合使用

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

您可以使用pry-rescuegem,这样每当出现问题时,您的测试就会启动一个窥探会话。你所要做的就是将宝石添加到你的宝石文件中:

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

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

PRY_RESCUE_RAILS=1 rails test rails test test/integration/agendas_test.rb

使用-f

在纯ruby中,正如您所要求的,这意味着ruby <file> -f

在rails中,这意味着rails test -f

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

相关内容

最新更新