我使用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-rescue
gem,这样每当出现问题时,您的测试就会启动一个窥探会话。你所要做的就是将宝石添加到你的宝石文件中:
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
标志无关。