2009-09-03 21 views
7

¿Cómo puedo hacer que las pruebas de mi aplicación Rails se ejecuten en orden aleatorio? ¿Hay una solución simple usando rastrillo?Ruby - Ejecutando pruebas en orden aleatorio con rastrillo

+3

¿Por qué querrías hacer eso? –

+2

Para asegurarse de que no haya dependencias entre las pruebas? –

+1

Sí, el punto principal para nosotros es garantizar que no haya dependencias entre las pruebas. –

Respuesta

0

Es posible que desee comprobar hacia fuera "ZenTest 3.9.0: ahora con más mal" (no se puede hacer un enlace directo, utilizar la caché de Google)

Added ability to set test execution order, defaults to :random. EVIL! 
+0

Jugué algo de tiempo con ZenTest, pero nunca adivino cómo habilitar el orden aleatorio. Quiero decir, el orden de ejecución predeterminado es fijo y permanece igual en diferentes ejecuciones de prueba. –

4

Aquí tiene, definir esto en 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 

Run: rake test:randomize:all

Tenga en cuenta que dentro de las pruebas de archivos todavía se ejecutará en el orden en que aparecen. Supongo que podrías usar la unidad de prueba de parche mono para permitir eso.

+0

Gracias Sam. Esto no me funciona, y en realidad la solución que publicó es la misma a la que vine: simplemente mezcle la matriz que contiene la lista de archivos de prueba para ejecutar. De hecho, el orden de los archivos de prueba que pasa al rastreador TestTask parece ser ignorado, lo que significa que internamente rake clasificará esta lista alfabéticamente en el nombre del archivo. Verifico este comportamiento al ejecutar la tarea de rake con la opción TESTOPTS = "- v" para supervisar el orden de ejecución de la prueba real. Estas son las versiones que utilizo: Ruby: 1.8.6 - 114 RubyGems: 1.3.5 Rake: 0.8.7 Rieles: 2.3.3 ¿Tiene más ideas? ¡Tx! –

Cuestiones relacionadas