2009-03-26 21 views
7

जब मैं अपने सभी यूनिट परीक्षणों को चलाने के लिए चाहता हूं, तो मैं रेक परीक्षण चलाता हूं: इकाइयां। मेरे सभी कार्यात्मक परीक्षणों को चलाने के लिए, मैं रेक परीक्षण चलाता हूं: कार्यात्मक। मैं एक फ़ाइल में सभी प्रकार के परीक्षण को चलाना चाहते हैं, मैं चलानेरेल पर रूबी: रनिंग टेस्ट

गहरे लाल रंग का परीक्षण/इकाई/username_test.rb

कुछ लोगों ने मुझे बता दिया है मैं इसके बजाय इस तरह के रूप

रेक रेक चलाना चाहिए परीक्षण: इकाइयों परीक्षण = परीक्षण/इकाई/username_test.rb

परीक्षण चलाने के लिए, वे कहते हैं कि मुझे हमेशा रेक बनाना चाहिए। मुझे पता है कि अगर मैं अपने सभी यूनिट परीक्षणों का परीक्षण कर रहा हूं तो मुझे रेक चलाने चाहिए। लेकिन क्या होगा यदि यह एक फ़ाइल में सिर्फ एक फ़ाइल या एक विशेष परीक्षण विधि है जिसे मैं परीक्षण कर रहा हूं? क्या मुझे अभी भी रेक का उपयोग करना चाहिए? क्या दोनों के बीच कोई अंतर है? क्या मुझे रूबी पर रेक चलाने से कोई फायदा होता है? क्या रेक के बजाए रूबी चलाने के लिए कोई नुकसान है?

उत्तर

2

नहीं, मुझे ऐसा नहीं लगता है। रेक सभी परीक्षणों, सभी यूनिट परीक्षणों या सभी कार्यात्मक/नियंत्रक परीक्षणों को चलाने का एक सुविधाजनक तरीका प्रतीत होता है। एक फ़ाइल के लिए, मैं ruby object_test.rb दृष्टिकोण का उपयोग करता हूं .. छोटे और मेरे रेल घर परियोजना के लिए ठीक काम करता है।

6

अफसोस की बात है, दोनों समान नहीं हैं। रेक के तहत परीक्षण चलाने से आप सीधे परीक्षण चलाते समय अलग-अलग स्थानों से चीजों को खींच सकते हैं (जब आपके सिस्टम पर रत्नों के कई संस्करण होते हैं तो एक समस्या होती है)।

इरादा यह है कि रेक के तहत चलने वाले परीक्षण ऐसे वातावरण में होना चाहिए जो रेलों का उत्पादन करेगा; मैं इस बात की पुष्टि नहीं कर सकता कि वे कितनी बारीकी से मेल खाते हैं, लेकिन मैंने देखा है कि सीधे चलाते समय पारित हो गया लेकिन रेक या रेल (और वीज़ा बनाम) के माध्यम से दौड़ने में असफल रहा।

+0

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

3

कम से कम जांच करने से पहले मैं सब कुछ हिट करने के लिए rake चलाने की अनुशंसा करता हूं ताकि यह सुनिश्चित किया जा सके कि अप्रत्याशित कुछ भी टूट गया है।

सादा रूबी पुनरावृत्तियों के दौरान एकल फ़ाइलों के तेज़ परीक्षण के लिए आदर्श लगता है।

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

-1

वे समान होना चाहिए। अगर वे नहीं हैं, तो आप निश्चित रूप से कुछ गलत कर रहे हैं।

जैसा कि मैंने अपनी अन्य टिप्पणियों में कहा था, अगर आपको एक में पास होने वाले परीक्षण मिलते हैं, लेकिन दूसरे में असफल होते हैं, तो आप कुछ गलत कर रहे हैं; यह एक खराब परीक्षण सेटअप इंगित करता है, और आमतौर पर दो परीक्षण दृष्टिकोणों के बीच एक अलग परीक्षण रन आदेश के कारण होता है; जिनमें से एक परीक्षण विफल होने का कारण बनता है।

आमतौर पर इसका कारण यह है कि आप लेनदेन का उपयोग नहीं कर रहे हैं और/या परीक्षण स्वयं के बाद सफाई नहीं कर रहे हैं। उदाहरण के लिए, उन फ़िक्स्चर की उचित आवश्यकता नहीं है जिन्हें वे बाद में परीक्षण करते हैं, और इसके बजाय पूर्व-मौजूदा डेटाबेस स्थिति पर निर्भर करते हैं।

आप या तो विधि का उपयोग करने के लिए स्वतंत्र हैं। अगर कुछ तोड़ता है, तो आप अपने परीक्षणों में कुछ गलत कर रहे हैं, और आपको अपना कोड ठीक करना चाहिए।

0

दोनों समान नहीं हैं। रेक कुछ प्रारंभिक परीक्षण लोडिंग करेगा।

इरादा यह है कि रेक के तहत चलने वाले परीक्षण ऐसे वातावरण में होना चाहिए जो रेलों का उत्पादन करेगा;

एक अंतर मैंने देखा है कि रेक के साथ कुछ स्थिरता लोडिंग होती है जो रूबी के साथ पारित हो सकती है।

मैं रेक का उपयोग करने की अनुशंसा करता हूं, जब तक कि आप रूबी कमांड लाइन का उपयोग -n विकल्प के साथ फ़ाइल में केवल एक परीक्षण में नहीं कर रहे हों।

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