Как мога да направя тестовете за моето приложение Rails да се изпълняват в произволен ред? Има ли просто решение с помощта на рейк?
Ruby - Изпълнение на тестове в произволен ред с рейк
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, изглежда се игнорира, което означава, че вътрешно рейк ще сортира този списък по азбучен ред на името на файла. Проверявам това поведение, като изпълнявам рейк задачата с опцията TESTOPTS=-v, за да наблюдавам действителния ред на изпълнение на теста. Ето версиите, които използвам: Ruby: 1.8.6 - 114 RubyGems: 1.3.5 Rake: 0.8.7 Rails: 2.3.3 Имате ли още идеи? Tx!
- 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