11

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

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

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

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

4

5 回答 5

3

我认为您的意思是提供“快速失败”选项。我找到了用于 minitest (Test::Unit): Immediate backtrace & exit的 fail_fast文章,但这已经过时了(仍然涵盖了可以做的事情)。我认为您需要对您的测试库进行猴子补丁以启用此选项。我找到了一个 Gist,展示了如何添加一个简单的快速失败选项,minitest/turn/minitest-rails这样可能会让你走上正轨。我了解您的问题与我引用的第一篇文章有​​关:

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

于 2014-01-05T14:56:26.983 回答
3

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

于 2018-03-08T03:42:57.697 回答
2

正如我在这里回答的那样,我找到了一个宝石:minitest-fail-fast。它适用于 Rails 4.2 和 Minitest 5.6.1

于 2015-05-01T16:57:01.423 回答
1

使用-f.

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

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

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

于 2019-06-30T14:23:33.593 回答
1

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

您可以使用pry-rescuegem,以便您的测试在出现问题时启动一个 pry 会话。您所要做的就是将 gem 添加到您的 Gemfile 中:

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

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

PRY_RESCUE_RAILS=1 rails test rails test test/integration/agendas_test.rb
于 2019-06-14T09:31:54.957 回答