2011-07-16 12 views
46

मैं काफी नौसिखिया परीक्षक हूं, लेकिन रेल में टीडीडी में बेहतर होने की कोशिश कर रहा हूं।मिनीटेस्ट कैसे सेट करें?

आरएसपीईसी बहुत अच्छा काम करता है, लेकिन मेरे परीक्षण बहुत धीमे हैं। मैंने सुना है कि मिनीटेस्ट बहुत तेज़ है, और मिनीटेस्ट/स्पेक डीएसएल बहुत समान दिखता है कि मैं आरएसपीईसी के साथ काम करने के लिए कैसे उपयोग किया जाता हूं, इसलिए मैंने सोचा कि मैं इसे आज़मा दूंगा।

हालांकि, मैं वेब पर कुछ भी नहीं ढूंढ पा रहा हूं जो न्यूनतम सेटअप और सेटअप करने की पैदल यात्रा प्रदान करता है। मैंने आरएसपीईसी पुस्तक से परीक्षण करने का तरीका सीखा, और मुझे नहीं पता कि कैसे टेस्ट :: यूनिट या मिनीटेस्ट काम करना चाहिए। मेरे पास मेरे रत्न में मणि है, मैंने कुछ सरल परीक्षण लिखे हैं, लेकिन मुझे नहीं पता कि उन्हें कहां रखा जाए या उन्हें कैसे चलाया जाए। मुझे लगता है कि यह उन चीजों में से एक है जो इतनी स्पष्ट हैं कि इसे लिखने के लिए कोई भी परेशान नहीं है ...

क्या कोई मुझे बता सकता है कि कुछ न्यूनतम/spec फ़ाइलों को कैसे सेट अप करें और उन्हें चलाना ताकि मैं प्रदर्शन के साथ तुलना कर सकूं rspec?

संपादित

विशेष रूप से इन मूल बातें मैं सबसे जानने की जरूरत हैं:

  1. आप एक test_helper फ़ाइल (spec_helper की तरह) और यदि ऐसा है तो आप इसे कैसे बना सकता हूँ की जरूरत है?
  2. आप न्यूनतम कैसे चलते हैं?rspec spec या rspec path/to/file_spec.rb के बराबर प्रतीत नहीं होता है, मुझे क्या याद आ रही है?

धन्यवाद!

+1

एक शुरुआती बिंदु: http://metaskills.net/2011/03/26/using-minitest-spec-with-rails/ – kain

+1

कैन, धन्यवाद। मैंने यह पोस्ट देखा है ... दुर्भाग्यवश इसमें सबसे बुनियादी चरण शामिल नहीं है: क्या आपको test_helper फ़ाइल (spec_helper) की आवश्यकता है और यदि ऐसा है तो आप इसे कैसे बनाते हैं? और, ** आप मिनीटास्ट ** कैसे चलाते हैं? ऐसा लगता है कि 'rspec spec' या' rspec path/to/file_spec.rb' के बराबर नहीं है। यही वह है जो मैं वास्तव में अटक गया हूं। – Andrew

+0

इसके लिए क्या लायक है - इस प्रश्न को कुछ विचार और पसंदीदा मिला है, लेकिन कोई अपवर्त नहीं है। अभी जंगल में खो गया है, अगर आप इस प्रश्न को उत्तर देना चाहते हैं तो कृपया उत्तर दें ताकि यह लोगों के सामने वापस आ जाए। – Andrew

उत्तर

39

यह सवाल How to run all tests with minitest?

रूबी 1.9.3 का उपयोग करते हुए के समान है और 0.9.2.2 रेक एक निर्देशिका लेआउट दिया: लेकिन सबसे बुनियादी तरीका आप MiniTest परीक्षण का एक सेट चला सकते हैं माणिक के साथ ही है इस तरह:

require 'minitest/spec' 
require 'minitest/autorun' # arranges for minitest to run (in an exit handler, so it runs last) 

require 'alpha' 

describe 'Alpha' do 
    it 'greets you by name' do 
    Alpha.new.greet('Alice').must_equal('hello, Alice') 
    end 
end 
:

Rakefile 
lib/alpha.rb 
spec/alpha_spec.rb 

यहाँ alpha_spec.rb कैसा लग सकता हैrake test

  • एक परीक्षण:ruby -Ilib spec/alpha_spec.rb

  • और यहाँ Rakefile

    require 'rake' 
    require 'rake/testtask' 
    
    Rake::TestTask.new do |t| 
        t.pattern = 'spec/**/*_spec.rb' 
    end 
    

    आप

    • सभी परीक्षणों चला सकते है

      मुझे नहीं पता कि spec_helper.rb का उपयोग न्यूनतम के साथ सामान्य है या नहीं। एक लोड करने के लिए एक सुविधा विधि प्रतीत नहीं होता है। Rakefile को यह करें:

      require 'minitest/spec' 
      require 'minitest/autorun' 
      require 'alpha' 
      

      और spec/alpha_spec.rb के साथ अनावश्यक भागों को बदल देता है:

      require 'spec_helper' 
      
      • सभी परीक्षणों:

        require 'rake' 
        require 'rake/testtask' 
        
        Rake::TestTask.new do |t| 
            t.pattern = 'spec/**/*_spec.rb' 
            t.libs.push 'spec' 
        end 
        

        फिर spec/spec_helper.rb विभिन्न अनावश्यक चीजों को शामिल कर सकते हैंrake test

      • एक परीक्षण:ruby -Ilib -Ispec spec/alpha_spec.rb
    +0

    बहुत उपयोगी और बहुत गहन, धन्यवाद पैट्रिक! – Andrew

    4

    रूबी का आप किस संस्करण का उपयोग कर रहे हैं?

    मेरी समझ में, 1.9 ने MiniTest पेश किया, जो Test::Unit पूरी तरह से पीछे की तरफ संगत एपीआई के साथ बदलता है। तो यदि आप 1.9 पर हैं और आपके रेल ऐप संदर्भ Test::Unit हैं, तो यह वास्तव में पहले से ही MiniTest का उपयोग कर रहा है।

    अपने रूबी स्रोत पर एक नजर डालें - 1.9.2 के लिए test/unit.rb निम्नलिखित की आवश्यकता है:

    require 'minitest/unit' 
    require 'test/unit/assertions' 
    require 'test/unit/testcase' 
    

    और test/unit/assertionsMiniTest::Assertions भी शामिल है।


    तेजी से चलाने के लिए अपने परीक्षण प्राप्त करना एक और अन्य अंधेरा कला है। spork और watchr पर एक नज़र डालें। पूर्व आपके ऐप को प्रारंभिक रखता है, संशोधित फ़ाइलों को फिर से लोड करता है, और आपके परीक्षण सूट के प्रत्येक भाग से पहले कांटेदार रखता है। उत्तरार्द्ध परिवर्तनों के लिए आपके रेपो में फ़ाइलों को देखता है, और स्वचालित रूप से उनके संबंधित परीक्षण मामलों को चलाता है।

    साथ में वे आपको एक सुंदर मतलब टीडीडी सेटअप देते हैं। आप अपने नए मॉडल के लिए एक टेस्ट केस लिखते हैं, और यह स्वचालित रूप से चलता है और विफल रहता है। फिर जब भी आप संबंधित मॉडल को सहेजते हैं, वह टेस्टकेस फिर से चलता है, बहुत तेज़ी से। आप तत्काल प्रतिक्रिया प्राप्त करते हैं कि आप लाल/हरे रंग के हैं या नहीं।

    वे दोनों अच्छी तरह से स्थापित होने और अच्छी तरह से व्यवहार करने के लिए थोड़ा मुश्किल हैं, इसलिए यदि आप अटक जाते हैं तो कुछ और प्रश्नों के साथ वापस जांचें।

    शुभकामनाएँ!

    4

    ध्यान दें कि परीक्षण चलाने के लिए वॉकर या स्पार्क की आवश्यकता नहीं है। वे autotesting करने के लिए एक सुविधा है। ,

    $ ruby myfileoftests.rb 
    
    1

    RSpec के नए संस्करण (2.8 के बाद से जनवरी 2012 में रिलीज़) एक नाटकीय गति वृद्धि की है। Here प्रदर्शन अंतर और मिनीटेस्ट के साथ तुलना की एक खोज है।

    इसके अलावा, मुझे मिनीटेस्ट के लिए उत्कृष्ट परिचय के साथ रयान बेट्स द्वारा this स्क्रीनकास्ट मिला। ध्यान दें कि यह समर्थक वीडियो में से एक है और आपको इसे देखने के लिए सदस्यता लेने की आवश्यकता होगी।

    3

    minitest-rails के लिए यह getting started video देखें। यह एक रेल ऐप के लिए न्यूनतम सेट अप करने की प्रक्रिया के माध्यम से चलता है।

    http://www.youtube.com/watch?v=xA2f2zBNvsc

    पूर्वाभ्यास से पता चलता रूप में अच्छी तरह कैसे एक रेक कार्य का उपयोग कर परीक्षण चलाने के लिए के रूप में एक सहायक फ़ाइल बनाने के लिए कैसे।आप एक विशिष्ट परीक्षण चलाना चाहते हैं तो आप निम्नलिखित के साथ ऐसा कर सकते हैं:

    task :default => :test 
    task :test do 
        Dir.glob('./test/*_test.rb').each { |file| require file} 
    end 
    

    मेरे सारे Minitest फ़ाइलें चलाने के लिए:

    ruby -Itest test/models/user_test.rb 
    
    1

    यहाँ मेरा पूरा rakefile, जो मैं अपने शीर्ष निर्देशिका में डाल दिया है एक बार में, मैं बस rake टाइप करता हूं। बस!

    अपनी न्यूनतम मिनी फाइलों के शीर्ष पर require 'minitest/autorun' रखना सुनिश्चित करें। Dir.glob निश्चित रूप से Minitest के साथ काम करता है।

    मेरे सभी परीक्षण विधियों के नाम के साथ सुंदर, रंगीन न्यूनतम आउटपुट प्राप्त करने के लिए, मेरे पास मेरी/test निर्देशिका में फ़ाइल minitest_helper.rb है।

    require 'minitest/reporters' 
    Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new) 
    require 'minitest/autorun' 
    

    मैं बस अपना परीक्षण फ़ाइलों में से प्रत्येक के शीर्ष पर require_relative './minitest_helper' पड़ा: (मणि minitest-संवाददाताओं से स्थापित करने के लिए था)।

    संबंधित मुद्दे