2012-04-25 11 views
22

Tengo un montón de RSpecRake tareas definidas que me gustaría ejecutar en un orden específico cuando ejecuto todo el conjunto de pruebas.Ejecutar tareas de RSpec en un orden específico

He intentado algo como esto:

task :run_in_order => [:one, :two, :three] do 
    puts "Run suite of tests" 
end 

y se ejecuta la primera prueba y luego se detiene y no se ejecuta el resto de las tareas.

Por lo tanto, si utiliza la sintaxis de Rake, no funciona. ¿Hay alguna manera de observar las dependencias de tareas para las tareas de Rape RSpec?

+2

No lo hagas, es una muy mala práctica porque las pruebas deben ser independientes unas de otras – luacassus

+8

@luacassus lo sé. Estoy trabajando para conseguir algo en lugar de no hacerlo de esta manera. Sin embargo, mientras tanto, así son las cosas. Así que estoy buscando una respuesta que no sea 'no lo hagas'. ¿Esto técnicamente no es posible con Rspec? – Hillary

+1

Tal vez "no lo hagas" para saber realmente si las pruebas se aprueban, pero si estás haciendo una prueba para generar un informe de las especificaciones para discutir con un cliente, entonces es capaz de generar el informe en un orden significativo. bastante esencial. – digitig

Respuesta

45

Marque esta http://blog.davidchelimsky.net/2012/01/04/rspec-28-is-released/

-order rand Hemos añadido una opción --order con dos valores soportados: rand y por defecto.

rspec --orden aleatorio (o rand) le dice a RSpec que ejecute los grupos en un orden aleatorio , y luego ejecute los ejemplos dentro de cada grupo en orden aleatorio . Lo implementamos de esta manera (en lugar de completar la aleatorización de cada ejemplo) porque no queremos volver a ejecutar costoso antes (: todos) los ganchos. Una compensación justa, ya que la aleatorización resultante es tan efectiva para exponer errores de dependencia de orden.

Cuando utiliza --orden aleatorio, RSpec imprime el número aleatorio que usó para inicializar el aleatorizador. Cuando se piensa que ha encontrado un fallo fin dependencia, se puede pasar a lo largo de la semilla y el orden se siendo constante:

--order rand: 3455 predeterminado --order dice RSpec para cargar grupos y ejemplos como se declaran en cada archivo

Básicamente debe ordenar sus pruebas en un archivo de especificaciones y luego ejecutarlo con la opción --order default. .

Cuestiones relacionadas