Это немного похоже на Несколько тестов с минимальным тестом
Возможно, это возможно: скопируйте ваш тестовый пример в собственный файл. В качестве примера попробуйте следующий тест:
#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
Затем определите свой тестовый вызов в рейке:
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
не будет завершен.
Примечания:
- Рейк не нужен, вы можете сделать звонок без рейка ( Мой шаблон был задачей рейка)
- Это работает только в том случае, если ваш xml изменяется для каждого прогона (он должен быть регенерирован перед тестом. В противном случае вы тестируете всегда одинаково).
- Вы можете сохранить результат теста (
stdout
) в файле и использовать его позже для анализа, какие тесты не пройдены, и попытаться повторно их протестировать.