Как сделать так, чтобы тесты для моего приложения Rails выполнялись в случайном порядке? Есть ли простое решение с использованием грабли?
Ruby — выполнение тестов в случайном порядке с помощью rake
comment
Почему вы хотите это сделать?
- person Sam Saffron   schedule 04.09.2009
comment
Чтобы между тестами не было зависимостей?
- person Andrew Grimm   schedule 04.09.2009
comment
Да, главное для нас — сделать так, чтобы между тестами не было зависимостей.
- person Pietro Di Bello   schedule 04.09.2009
comment
См. также Почему Test::Unit.test_order= не работает как ожидается?
- person knut   schedule 13.12.2012
Ответы (2)
Ну вот, определите это в lib/tasks/tasks.rb
namespace :test do
namespace :randomize do
desc "Randomize tests"
Rake::TestTask.new(:all => "db:test:prepare") do |t|
t.libs << "test"
t.test_files = Rake::FileList[
'test/unit/**/*_test.rb',
'test/functional/**/*_test.rb',
'test/integration/**/*_test.rb'
].shuffle
t.verbose = true
end
end
end
Выполнить: rake test:randomize:all
Имейте в виду, что внутрифайловые тесты по-прежнему будут выполняться в том порядке, в котором они появляются. Я думаю, вы могли бы использовать модуль тестирования патчей для обезьян, чтобы учесть это.
person
Sam Saffron
schedule
04.09.2009
Спасибо, Сэм. Это не работает для меня, и на самом деле решение, которое вы опубликовали, такое же, к которому я пришел: просто перетасуйте массив, содержащий список тестовых файлов для выполнения. На самом деле, порядок тестовых файлов, которые вы передаете в грабли TestTask, похоже, игнорируется, а это означает, что внутренне грабли будут сортировать этот список в алфавитном порядке по имени файла. Я проверяю это поведение, выполняя задачу rake с параметром TESTOPTS=-v, чтобы контролировать фактический порядок выполнения теста. Вот версии, которые я использую: Ruby: 1.8.6 - 114 RubyGems: 1.3.5 Rake: 0.8.7 Rails: 2.3.3 У вас есть еще идеи? Ткс!
- person Pietro Di Bello; 04.09.2009
Вы можете проверить «ZenTest 3.9.0: теперь с большим количеством зла» (не могу сделать прямую ссылку, используйте кеш Google)
Added ability to set test execution order, defaults to :random. EVIL!
person
Andrew Grimm
schedule
04.09.2009
Я некоторое время играл с ZenTest, но никогда не догадывался, как включить случайный порядок. Я имею в виду, что порядок выполнения по умолчанию фиксирован и остается одинаковым для разных тестов.
- person Pietro Di Bello; 04.09.2009