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