Ruby - Изпълнение на тестове в произволен ред с рейк

Как мога да направя тестовете за моето приложение Rails да се изпълняват в произволен ред? Има ли просто решение с помощта на рейк?


person Pietro Di Bello    schedule 03.09.2009    source източник
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
comment
Благодаря Сам. Това не работи за мен и всъщност решението, което публикувахте, е същото, до което стигнах: просто разбъркайте масива, съдържащ списъка с тестови файлове за изпълнение. В интерес на истината, редът на тестовите файлове, които предавате на рейк 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
comment
Играх известно време със ZenTest, но никога не предполагам как да активирам произволен ред. Искам да кажа, че редът на изпълнение по подразбиране е фиксиран и остава същият при различните изпълнения на тестове. - person Pietro Di Bello; 04.09.2009