2016-04-25 108 views
0

我一直在調試我的應用程序幾個小時了。我輸入rake test可以獲得我的錯誤報告。對於沒有理由顯而易見的我,一下子rake test輸出的是當我運行耙測試時minitest錯誤沒有顯示

Run options: --seed 33507 

# Running: 

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

只有幾分鐘前這個命令表明我每次測試的結果。我究竟做錯了什麼?

+1

這是完整的輸出嗎?在測試序列中,測試是否檢測到無限循環?還是測試完成? – knut

+0

是,這是完整的輸出。測試_出現完成的基礎上,我得到一個新的命令提示符。 – stoebelj

+1

好的,這只是這個特定測試序列無限循環的想法。但是當你的測試結束時,它必定是另一個原因。 – knut

回答

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 21072test_exittest_trueexit未被執行之前被執行。你會得到結果。

相關問題