2012-05-27 10 views
6

Stiamo sviluppando un'applicazione su Ruby 1.9.3 e Rails 3.2.1.Perché il mio "tempo di avvio" di `rake test: units` su Rails 3.2.1 è lento?

Recentemente, i nostri test unitari sono diventati lenti all'inizio. Occorrono circa 15 secondi per l'esecuzione delle invocazioni &. Una volta che vedo "Esegui test: unità", ci vogliono altri 10 secondi prima di vedere qualsiasi output. Infine, l'attività viene completata e i test richiedono solo 3 secondi per essere eseguiti.

3 secondi per le prove dell'unità è accettabile. Il tempo di caricamento di 25 secondi non è realistico per BDD/TDD.

Ecco cosa succede quando corro con rake test:units --trace:

** Invoke test:units (first_time) 
** Invoke test:prepare (first_time) 
** Invoke db:test:prepare (first_time) 
** Invoke db:abort_if_pending_migrations (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:abort_if_pending_migrations 
** Execute db:test:prepare 
** Invoke db:test:load (first_time) 
** Invoke db:test:purge (first_time) 
** Invoke environment 
** Execute db:test:purge 
** Execute db:test:load 
** Invoke db:test:load_schema (first_time) 
** Invoke db:test:purge 
** Execute db:test:load_schema 
** Invoke db:schema:load (first_time) 
** Invoke environment 
** Execute db:schema:load 
** Execute test:prepare 
** Execute test:units 

non avrei dubbi che lo schema del database viene caricato, poi ri-caricato, potrebbe essere una fonte primaria di lentezza. Tuttavia, non ho fatto nulla per il nostro Rakefile relativo ai test unitari. Dove posso sbirciare per vedere cosa sta veramente succedendo sotto il cofano?

Questo è ciò che è in cima alla test/test_helper.rb:

require 'simplecov' 
ENV["RAILS_ENV"] = "test" 
require File.expand_path('../../config/environment', __FILE__) 
require 'rails/test_help' 

Quello che ho provato:

  1. Commentando simplecov, come si usa solo per il nostro server CI, non durante lo sviluppo (non ha fatto alcuna differenza nei tempi di esecuzione)
  2. Commentando le altre cose, ma questo ha interrotto i test anche dopo l'esecuzione. Non sono del tutto sicuro del motivo per cui sono presenti altri elementi, poiché pensavo che l'ambiente Rails sarebbe stato caricato automaticamente in "test".

Qualche idea su dove/come posso colpire la mia testa accanto a vedere?

C'è qualche possibilità che Rails stia eseguendo migrazioni anziché solo schema:load? Mentre sviluppiamo, abbiamo un gran numero di migrazioni (~ 30).

EDIT:

Sto usando un 2011-modello di MacBook Pro con 8G di RAM e Core i7 - non credo che sia la mia macchina. Ho visto in this question che su Windows, require può causare problemi.

Ho anche considerato che i proiettori potrebbero essere il problema, ma se i dispositivi fossero il problema, i test stessi, non il tempo di caricamento dei test, sarebbero lenti, giusto?

EDIT 2:

Grazie alla risposta di pchap10k penso che non ha nulla a che fare con il rastrello - è circa il nostro Gemfile. Forse dovrei cercare in quell'area ...

risposta

2

Le tue gemme potrebbero essere caricate lentamente. Vedi questo thread per lamentele simili su tempi di caricamento lento rastrello in Rails 3.x>slow rails stack

+0

Sembra che sia. Gemfile impiegava 15 secondi per caricare l'ambiente Rails. – makdad

Problemi correlati