0
我使用Test :: Unit :: TestCase編寫了一些單元測試,其中ci_reporter生成了XML。但是,由於無法控制的情況,它們可能偶爾會波動,並隨機失敗。我想檢測測試何時失敗,並嘗試重新運行它。在ruby中重新運行失敗的單元測試
我試圖用猴子補丁「拆解」這樣做是爲了檢查「過去了?」,並重新運行在一個失敗的試驗。但是,XML輸出仍將顯示第一個失敗的案例,而不是第二個(即將通過)的運行。
我使用Test :: Unit :: TestCase編寫了一些單元測試,其中ci_reporter生成了XML。但是,由於無法控制的情況,它們可能偶爾會波動,並隨機失敗。我想檢測測試何時失敗,並嘗試重新運行它。在ruby中重新運行失敗的單元測試
我試圖用猴子補丁「拆解」這樣做是爲了檢查「過去了?」,並重新運行在一個失敗的試驗。但是,XML輸出仍將顯示第一個失敗的案例,而不是第二個(即將通過)的運行。
這聽起來有點像Multiple tests with minitest
相反也許這是一種可能性:在自己的文件,你的測試用例複製。作爲一個例子,請嘗試以下測試:
#store it as file 'testcase.rb'
gem 'test-unit'
require 'test/unit'
class X < Test::Unit::TestCase
def test_1
num = rand(10)
assert_true(num < 2, "Value is #{num}")
end
end
然後在rake任務定義您的測試呼叫:
require 'rake'
TEST_REPETION = 10
task :test do
success = false
TEST_REPETION.times{
stdout = `ruby testcase.rb`
if stdout =~ /Failure/
puts "Failure occured - redo the test"
else
puts 'Tests ok'
success = true
exit
end
}
puts "Stopped after #{TEST_REPETION} tries" unless success
end
現在測試稱,直到試驗成功或TEST_REPETION
完成。
備註:不需要
stdout
),並用它供以後分析,測試失敗並嘗試重新測試它們。
參見http://stackoverflow.com/questions/7435584/multiple-tests-with-minitest/7436257#7436257 – knut 2012-02-08 21:17:32
感謝您的答覆@knut,但很可惜這是一件超出了我的控制和未經mockable。有一個隨機因素,我必須忍受它,並找到解決方法。 – 2012-02-09 11:38:26
哎呀,我鏈接到一個答案。我想鏈接的問題http://stackoverflow.com/questions/7435584/multiple-tests-with-minitest/ - 我會做出答案。 – knut 2012-02-09 20:23:10