我一直在努力调试我的应用程序几个小时。我输入rake test
以获取有关错误的报告。对我来说没有任何理由,突然rake test
的输出是
Run options: --seed 33507
# Running:
........................EEEEEEE...........................E...........E.E.EF..EE...............................F.......F..EE....................FEEE..............................................
前几分钟,这个命令显示了每个测试的结果。我做错了什么?
答案 0 :(得分:1)
问题是代码中的exit
。
exit
在写入测试结果之前停止执行。
重复问题的最小例子:
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_exit
在test_true
之前执行,而exit
未执行。你得到了结果。