हम रुबी 1.9.3 और रेल 3.2.1 पर एक ऐप विकसित कर रहे हैं।रेलवे 3.2.1 पर 'रेक टेस्ट: इकाइयों' का मेरा "बूट टाइम" इतना धीमा क्यों है?
हाल ही में, हमारे यूनिट परीक्षण शुरुआत में सुस्त हो गए हैं। आमंत्रण & निष्पादन के लिए ~ 15 सेकंड लगते हैं। एक बार जब मैं "निष्पादन परीक्षण: इकाइयों" देखता हूं, तो मुझे कोई आउटपुट देखने से पहले 10 सेकंड लगते हैं। अंत में, कार्य पूरा हो जाता है और परीक्षण स्वयं को निष्पादित करने में केवल 3 सेकंड लगते हैं।
यूनिट परीक्षणों के लिए 3 सेकंड स्वीकार्य है। 25 सेकंड लोड समय बीडीडी/टीडीडी के लिए यथार्थवादी नहीं है।
यहाँ क्या होता है जब मैं 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
मुझे शक नहीं है कि डेटाबेस स्कीमा लोड किए जा रहे है, तो फिर से भरी हुई, सुस्ती का एक प्रमुख स्रोत हो सकता है। हालांकि, मैंने यूनिट परीक्षण से संबंधित हमारे Rakefile
पर कुछ भी नहीं किया है। हुड के नीचे वास्तव में क्या हो रहा है यह देखने के लिए मैं कहां देख सकता हूं?
यह वही है test/test_helper.rb
के शीर्ष पर है:
require 'simplecov'
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
मैं क्या कोशिश की है:
simplecov
बाहर टिप्पणी करते हुए के रूप में हम केवल हमारे सीआई सर्वर के लिए उपयोग करें कि, नहीं विकास के दौरान (निष्पादन समय में कोई फर्क नहीं पड़ता)- अन्य सामानों पर टिप्पणी करते हुए, लेकिन यह निष्पादन से परीक्षण तोड़ दिया। मुझे पूरी तरह से यकीन नहीं है कि वे अन्य आइटम क्यों हैं, जैसा कि मैंने सोचा था कि रेल पर्यावरण स्वचालित रूप से "परीक्षण" में लोड किया जाएगा।
कोई विचार है कि मैं कहां/कैसे देख सकता हूं कि मैं अपने सिर को कैसे देख सकता हूं?
क्या कोई मौका है कि रेल schema:load
की बजाय माइग्रेशन चल रहा है? जैसे-जैसे हम विकसित होते हैं, हमारे पास बड़ी संख्या में माइग्रेशन (~ 30) होते हैं।
संपादित करें:
मैं एक 2011-मॉडल मैकबुक प्रो 8 जी रैम और कोर i7 के साथ उपयोग कर रहा हूँ - यह मेरे मशीन है नहीं लगता। मैंने in this question देखा है कि विंडोज़ पर, require
समस्याएं पैदा कर सकता है।
मैंने यह भी माना है कि फिक्स्चर समस्या हो सकती है, लेकिन यदि फिक्स्चर समस्या थी, तो परीक्षण स्वयं, परीक्षणों के लिए लोड समय नहीं, धीमा होगा, है ना?
संपादित करें 2:
pchap10k के जवाब के लिए धन्यवाद मुझे लगता है कि रेक के साथ कोई संबंध नहीं है कि - यह हमारे Gemfile
बारे में है। शायद मुझे उस क्षेत्र में खोजना चाहिए ...
में धीमी रेक लोड समय के बारे में समान शिकायतों के लिए इस धागे को देखें। रेल पर्यावरण को लोड करने के लिए जेमफाइल 15 सेकंड ले रहा था। – makdad