2012-04-25 8 views
22

मेरे पास RSpecRake कार्य का एक समूह है जो परिभाषित करता है कि जब मैं परीक्षण के पूरे सूट को चलाता हूं तो मैं एक विशिष्ट क्रम में भागना चाहता हूं।एक विशिष्ट क्रम में RSpec कार्यों को चलाएं

मैं कुछ इस तरह की कोशिश की है:

task :run_in_order => [:one, :two, :three] do 
    puts "Run suite of tests" 
end 

और यह पहला परीक्षण चलाता है और उसके बाद बंद हो जाता है और कार्यों के बाकी नहीं चलता है।

तो यदि रेक वाक्यविन्यास का उपयोग करना यह काम नहीं करता है। आरएसपीईसी रेक कार्यों के लिए कार्य निर्भरताओं को नोट करने का कोई तरीका है? रैंड और डिफ़ॉल्ट:

+2

ऐसा मत करो, यह एक बहुत बुरा अभ्यास है क्योंकि परीक्षण एक दूसरे से स्वतंत्र होना चाहिए – luacassus

+8

@luacassus मुझे पता है। मैं इस तरह से ऐसा करने के लिए कुछ जगह पाने पर काम कर रहा हूं। हालांकि, इस बीच, चीजें हैं। तो मैं 'ऐसा मत करो' के अलावा किसी अन्य उत्तर की तलाश में हूं। क्या यह तकनीकी रूप से रुपयेपीसी के साथ संभव नहीं है? – Hillary

+1

शायद यह पता लगाने के लिए कि "परीक्षण नहीं करते हैं" परीक्षण हो सकता है, लेकिन यदि आप किसी ग्राहक के साथ चर्चा करने के लिए विनिर्देशों की एक रिपोर्ट तैयार करने के लिए दौड़ कर रहे हैं तो एक सार्थक आदेश में रिपोर्ट तैयार करने में सक्षम होना बहुत जरूरी है। – digitig

उत्तर

45

चेक इस http://blog.davidchelimsky.net/2012/01/04/rspec-28-is-released/

-order रैंड हम दो समर्थित मूल्यों के साथ एक --order विकल्प जोड़ा।

rspec --order यादृच्छिक (या रैंड) RSpec को यादृच्छिक क्रम में समूहों को चलाने के लिए बताता है, और फिर यादृच्छिक क्रम में प्रत्येक समूह के भीतर उदाहरण चलाएं। हमने इसे इस तरह कार्यान्वित किया (प्रत्येक उदाहरण के यादृच्छिकरण को पूरा करने के बजाए) क्योंकि हम महंगे (: सभी) हुक से पहले फिर से चलाने के लिए नहीं चाहते हैं। एक उचित ट्रेडऑफ, जिसके परिणामस्वरुप यादृच्छिकरण ऑर्डर-निर्भरता कीड़े को उजागर करने के लिए प्रभावी है।

जब आप यादृच्छिक रूप से उपयोग करते हैं, तो आरएसपीसी यादृच्छिक संख्या को प्रिंट करता है यादृच्छिक बीज के लिए उपयोग किया जाता है। जब आपको लगता है कि आप एक आदेश-निर्भरता बग मिला है, तो आप के साथ बीज पारित कर सकते हैं और व्यवस्था संगत बने रहेंगे:

रैंड --order: 3455 --order डिफ़ॉल्ट RSpec बताता समूहों और उदाहरण लोड करने के लिए के रूप में वे प्रत्येक फ़ाइल

घोषित किये गए हैं मूल रूप से आप एक युक्ति फ़ाइल में अपने परीक्षण का आदेश चाहिए एक तो --order default विकल्प के साथ निष्पादित। ।

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