2011-03-30 6 views
11

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

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

और यही कारण है कि मैं आपकी अंतर्दृष्टि चाहता हूं। क्या आपको लगता है कि आरएसपीईसी वास्तव में ज्यादा मूल्य के लिए जटिल नहीं है? क्या लेखन परीक्षा/इकाई कम समय और प्रयास लेती है?

+0

मैं डीएचएच से सहमत हूं क्योंकि रेल परीक्षण/इकाई अच्छी दिखती है। मैंने रेल परीक्षण फ्रेम, आरएसपीईसी, सेलेनियम इत्यादि का उपयोग किया है और यदि आपके पास संसाधनों के साथ-साथ धन और 50% अधिक समय है तो डीएचएच – Ashish

+1

के समान महसूस करें। तुलनात्मक रूप से जमे हुए आवश्यकताओं को कहने की जरूरत नहीं है बीडीडी/टीडीडी महान है अन्यथा डीएचएच ने क्या कहा है। तो आभारी है कि उन्होंने इस ब्लॉग पोस्ट को लिखा .. – Abs

उत्तर

14

मेरी सिफारिश या तो कस्टा (टेस्ट :: यूनिट बढ़ाती है) या आरएसपीईसी कैपिबरा और -नो-ककड़ी के साथ उपयोग करने के लिए होगी।

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

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

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

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

+0

वास्तव में, आरपीसीईसी से मुक्त होने वाले ऑटोमैजिक विफलता संदेश इसके आकर्षण का एक बड़ा हिस्सा हैं। –

+2

खीरेदार! ;) –

+0

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

8

यह सब अर्थशास्त्र के बारे में है। आरएसपीसी और टेस्ट :: यूनिट समान रूप से समान हैं। व्यक्तिगत रूप से मैंने हमेशा आरएसपीसी पसंद किया है क्योंकि मुझे इसका उपयोग करके परीक्षण लिखना अधिक स्वाभाविक लगता है। मुझे custom matchers लिखने की सादगी भी पसंद है, और प्रदान किए गए डिफ़ॉल्ट मैचर्स उपयोगी हैं।

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

मैंने उन परियोजनाओं पर काम किया है जहां ग्राहक हमारे क्यूए टीम में से एक के साथ ककड़ी परिदृश्य लिख रहे हैं। एक गैर तकनीकी व्यक्ति के रूप में यह कोड में उपयोगकर्ता कहानियों को निर्दिष्ट करने के लिए एक अत्यंत पहुंचने योग्य और प्राकृतिक तरीका है। ककड़ी ने वास्तव में हमारे चुस्त प्रथाओं का पालन करने के लिए चलने में हमारी मदद की। अंत उत्पाद की गुणवत्ता उस से लाभान्वित है लेकिन नहीं, एक डेवलपर के रूप में ककड़ी :)

3

यह व्यक्तिगत स्वाद का विषय है।

मुझे विवरण के बारे में चिंता किए बिना आसान ककड़ी परीक्षण लिखना पसंद है। बस मेरे ऐप के "खुश" पथ का परीक्षण करें। (पोर्टेबल, समझने योग्य, धीमी)

मैं विवरण टेस्ट/यूनिट में छोड़ देता हूं।(आसान, तेजी से)

यह अधिक समय को समझने के लिए ले जाता है:

get :products, :session => @session_id_for_product_banana 
assert_select "table" do 
    assert_select "td#name", "Banana" 
end 

बजाय

When I go to the banana page 
Then I should see "Banana" 

ज़रूर उन परीक्षण बराबर नहीं हैं, लेकिन कौन परवाह करता है कि क्या "केले" एक div में है या एक टेबल या सही एचटीएमएल आईडी नहीं है।

मैं 'कार्यात्मक परीक्षणों की तरह नहीं हूं क्योंकि रिफैक्टरिंग के बाद, आईडी समाप्त हो सकती है, सत्र की उम्मीद बदल दी जा सकती है। यदि ऐसा है तो आपको अपने कोड और परीक्षणों को दोबारा करने की आवश्यकता होगी। यदि आप ककड़ी का उपयोग करेंगे तो आपको अपने परिदृश्य को बदलना नहीं होगा।

+2

क्या होगा यदि आप तालिका में होने वाले "केला" के बारे में परवाह करते हैं, तो 'केले' के लिए त्रुटि संदेश "अपरिभाषित विधि 'ढूंढने के बजाय," स्ट्रिंग "? – Arsen7

+0

ऐसा हो सकता है लेकिन इसकी संभावना नहीं है। यह बहुत अधिक संभावना है कि आईडी बदलती है या आप एक div का उपयोग करने का निर्णय लेते हैं। यदि दृश्य में तर्क नहीं है तो आम तौर पर आप एक इकाई परीक्षण में इस तरह की त्रुटि में आ जाएंगे। इसके अलावा ककड़ी एक रनटाइम त्रुटि पर एक स्टैक ट्रेस के साथ भी उड़ाती है। –