当我运行rake测试时,minitest错误没有显示出来

时间:2016-04-25 18:26:47

标签: ruby-on-rails minitest

我一直在努力调试我的应用程序几个小时。我输入rake test以获取有关错误的报告。对我来说没有任何理由,突然rake test的输出是

Run options: --seed 33507

# Running:

........................EEEEEEE...........................E...........E.E.EF..EE...............................F.......F..EE....................FEEE..............................................

前几分钟,这个命令显示了每个测试的结果。我做错了什么?

1 个答案:

答案 0 :(得分:1)

问题是代码中的exitexit在写入测试结果之前停止执行。

重复问题的最小例子:

class MyTest < MiniTest::Test
  @@x = 0
  def test_true
    @@x += 1
    assert true
  end
  def test_exit
     exit 0 if @@x > 0
   end
  def test_false
    assert false
  end
end

根据序列顺序,您会得到不同的结果:

Run options: --seed 21072

# Running:

F..

Finished in 0.001011s, 2967.6086 runs/s, 1978.4057 assertions/s.

  1) Failure:
MyTest#test_false [test.rb:13]:
Failed assertion, no message given.

3 runs, 2 assertions, 1 failures, 0 errors, 0 skips

或另一个结果:

Run options: --seed 10907

# Running:

F.

背景:Minitest以随机顺序执行测试。使用种子,您可以按相同的顺序重复测试。

在我的示例--seed 10907中执行第一个test_true,然后test_exit执行exit - 语句 - 输出丢失。

使用--seed 21072 test_exittest_true之前执行,而exit未执行。你得到了结果。