2010-04-05 36 views
8

Test paketimin başlatılması sadece 5 saniye sürüyor mu? Boş bir paketi çalıştırırken bile bu kadar uzun sürer. Her koşuda yeni bir ray örneğini başlattığı için mi? Eğer öyleyse, kalıcı tutmak için zaten var mı?Raylarım neden bu kadar yavaş test ediyor?

Örnek: Gördüğünüz gibi

[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 

, bu boş bir test gerçekten çok hızlı olduğunu, ancak yükü 4 saniye nedense hala var. Shoulda ile Test :: Unit kullanıyorum.

+0

"Zaman eğimi testi: birimleri --trace" çıktısını yayınlayabilir misiniz? –

cevap

11

Test hızı darboğazı, ortamın yüklenmesi için Rayların sürmesi gereken zamandır. Komut dosyasını/konsolu çalıştırın ve sizi ortamınıza yüklemenin ne kadar sürdüğünü görün ... aynı olmalı.

Bir çok eklentiniz & cevher ile yeterince büyük bir kod tabanına sahip, yükleme süresi 1 dakika kadar yüksek olabilir! Eğer bana benziyorsan & durdurulan testler b/c sadece 30 saniye beklemekten bıkmışsın, sadece küçük bir değişimi test etmek için, bir test sunucusunu spec_sunver gibi çalıştırmalısın, ya da daha iyisi: spork!

Sınıf önbellekleme ile ilgili spec_server ile ilgili garip sorunlar olabileceğini göreceksiniz, bu yüzden spork tercih ediyorum.

+0

Teşekkürler, sanırım gerçekten Rails ortamının yüklenmesiydi. Rspec ile Spork'a geçtim ve biraz daha iyi. – ryeguy

+0

mücevherleri yüklemeyi deneyin, ancak bunları hemen gerektirmez. Bunun yerine kullanıldıklarında bunları gerektirirler ve çevre çok daha hızlı yüklenir. Rails 3'ün Gemfile dosyasında, bu durum şunun gibi görünür: gem 'some_gem_name',: lib => nil –

0

Testiniz ne kadar sürüyor? Genellikle Raylar testleri veritabanı erişimi nedeniyle uzun sürer. ayarlayarak örneği armatürleri kullanılarak

  1. durak: Eğer geldiğince başlangıçtaki gelişme onları hızlandırmak için işlemsel armatürleri kullanılarak

  2. başlangıç ​​

    yanlış

    self.use_instantiated_fixtures = ayarlayarak:

    kendini .use_transactional_fixtures = gerçek

Test performansını daha da artırmak için lütfen preloaded fixtures'u kullanmayı düşünün.

+0

Testlerin gerçekte * işleme * alması gereken süre ihmal edilebilir. Şu anda sadece bir paketim var, ama sorun testlerim olmadığı zaman bile hala 5 saniye sürüyor. Tek suitimi çalıştırdığımda belki 5.1 saniyedir. Sadece bu kadar önyükleme yapması gerekip gerekmediğini anlamaya çalışıyorum. Senin için yapar mı? – ryeguy

+0

açıkça poster bu problemi değil. –

1

Aynı sorunu yaşıyordum ve ruby ​​entreprise edition'ı (REE) yükleyerek çözdüm. Neden bilmiyorum ama raylar ortamını yüklemek benim yakutumun altında 4-5 saniye sürdü 1.9.2, REE ile 1-2 saniye.

RVM kullanarak yükledim.

İlgili konular