2010-04-05 12 views
8

¿Es normal que mi suite de pruebas tarde 5 segundos en iniciarse? Incluso cuando se ejecuta una suite vacía, todavía demora tanto. ¿Es porque está disparando una nueva instancia de rieles en cada carrera? Si es así, ¿hay alguna forma de mantenerlo persistente?¿Por qué mis rieles son tan lentos?

Ejemplo:

[email protected]:~/projects/rails/my_project$ time rake test 
/usr/bin/ruby1.9.1 -I"lib:test" "/var/lib/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/unit/release_test.rb" 
Loaded suite /var/lib/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader 
Started 

Finished in 0.000181867 seconds. 

0 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 
0% passed 

real 0m4.173s 
user 0m3.820s 
sys 0m0.288s 

Como se puede ver, este ensayo vacío es muy rápido, pero todavía hay 4 segundos de sobrecarga por alguna razón. Estoy usando Test :: Unit con Shoulda.

+0

Puede publicar la salida de "prueba de rake de tiempo: unidades --trace" –

Respuesta

11

El cuello de botella de velocidad de prueba es el tiempo que le lleva a Rails cargar su entorno. Ejecute el script/consola y vea cuánto tarda en cargarlo en su entorno ... debe ser el mismo.

¡Uno tiene una base de código lo suficientemente grande con muchos complementos & gemas, el tiempo de carga puede ser de hasta 1 minuto! Si eres como yo & deja de ejecutar las pruebas b/c estás cansado de esperar 30 segundos solo para probar un pequeño cambio, necesitas ejecutar un servidor de prueba como spec_server, o incluso mejor: ¡spork!

Encontrará que puede haber problemas extraños relacionados con el almacenamiento en caché de clases con spec_server, por lo que prefiero spork.

+0

Gracias, supongo que realmente solo fue la carga del entorno Rails. Cambié a Rspec con Spork y es un poco mejor. – ryeguy

+0

intente cargar las gemas pero no las necesita de inmediato. En su lugar, solicítelos cuando se utilicen y el entorno se cargará mucho más rápido. En el archivo Gem de Rails 3, se ve algo así como: gem 'some_gem_name',: lib => nil –

0

¿Cuánto tiempo dura la prueba? Por lo general, las pruebas de Rails tardan mucho debido al acceso a la base de datos. Acelerarlos mejora inicial como usted podría:

  1. dejar de usar los accesorios ejemplificados mediante el establecimiento de:

    self.use_instantiated_fixtures = false

  2. inicio utilizando accesorios transaccionales mediante el establecimiento de:

    auto .use_transactional_fixtures = true

Para mejorar aún más el rendimiento de las pruebas, considere usar preloaded fixtures.

+0

La cantidad de tiempo que tardan las pruebas en * ejecutar realmente * es insignificante. Solo tengo una suite en este momento, pero el problema es que incluso cuando no tengo ninguna prueba, todavía demoran 5 segundos en ejecutarse. Cuando ejecuto mi suite, es quizás de 5,1 segundos. Solo estoy tratando de averiguar si se supone que tomará tanto tiempo para arrancar. Lo hace por ti? – ryeguy

+0

claramente el cartel no está teniendo ese problema. –

1

Estaba teniendo el mismo problema y lo resolví instalando ruby ​​entreprise edition (REE). No sé por qué, pero cargar el entorno de los rieles tomó 4-5 segundos bajo mi rubí 1.9.2, frente a 1-2 segundos con REE.

Lo instalé usando RVM.

Cuestiones relacionadas