2009-07-28 11 views
11

एक त्वरित परिचय के साथ एक दो-पार्टर। परिचय: मैं पर्ल से रूबी आ रहा हूं, और मैं टेस्ट फ्रेमवर्क विकल्पों में थोड़ा सा खो गया हूं। मैं समझता हूं कि शायद कोई भी नहीं, लगभग सर्वोत्तम विकल्प है, लेकिन मुझे खेल के मैदान की स्पष्ट तस्वीर भी नहीं मिल सकती है।रूबी 1.9.एक्स के लिए परीक्षण ढांचे के बारे में सर्वसम्मति है?

तो, सबसे पहले, मिनीटेस्ट या टेस्ट :: यूनिट? मुझे अभी एहसास हुआ कि 1.9.1 अब मिनीटेस्ट में चूक गया है। मैंने देखा नहीं था क्योंकि सभी पुराने टेस्ट :: यूनिट ट्यूटोरियल अभी भी ठीक काम करते हैं। यदि आप require test/unit हैं, तो आपको वास्तव में मिनीटेस्ट को टेस्ट :: यूनिट एमुलेटर (!) के रूप में मिलता है। मेरा प्रारंभिक विचार मिनीटेस्ट की डिफ़ॉल्ट पसंद के साथ जाना था (एक बार मुझे पता था कि यह वहां था), लेकिन यहां तक ​​कि हाल ही की किताबें भी इसे पढ़ाने में रूचि नहीं लगती हैं। रूबी बेस्ट प्रैक्टिस कहते हैं, "दोनों के बीच महत्वपूर्ण अंतर हैं", लेकिन वह उनसे निपटने का विकल्प नहीं चुनता है। वह टेस्ट :: यूनिट (साथ ही कुछ कस्टम ऐड-ऑन) के माध्यम से अपने सभी परीक्षण चलाता है। नया पिकैक्स भी मिनीटेस्ट प्रति से के बारे में बहुत कम है, और परीक्षण के अध्याय में वे मिनीटेस्ट के टेस्ट :: यूनिट इम्यूलेशन संस्करण का भी उपयोग करते हैं। मेरे पहले प्रश्न को स्पष्ट करने के लिए: मिनीटेस्ट एक गरीब पहला विकल्प है? क्या मुझे टेस्ट :: यूनिट एमुलेटर का उपयोग करने के लिए डिफ़ॉल्ट होना चाहिए?

दूसरा, अंतर्निहित विकल्पों से परे, रुपेक, ककड़ी & व्यवहार संचालित परीक्षणों के लिए कंपनी है। क्या समुदाय इस शैली और इस ढांचे की दृढ़ता से झुका रहा है? क्या मुझे सिर्फ रुपेक से शुरू करना चाहिए?

मैं तीनों के साथ थोड़ा सा खेलूँगा, लेकिन मुझे यह जानकर उत्सुकता है कि रूबी 1.9 में किस प्रकार की आम सहमति (यदि कोई है) परीक्षण कर रही है।

(अपने आप को और रुचि किसी के लिए एक चेतावनी के रूप एक त्वरित अनुवर्ती,। टेस्ट :: विभिन्न माणिक 1.9.1 1.8 में यूनिट और MiniTest के लिए अलग आमंत्रण का एक उपयोगी अवलोकन के लिए this link देखें।)

उत्तर

6

क्या आम सहमति है? मैं नहीं कहूंगा। टीडीडी/बीडीडी का उपयोग करने के लिए एक मजबूत समुदाय आवाज है लेकिन फिर भी यह सार्वभौमिक नहीं है। पहले स्थान पर अभ्यास लागू करने से ढांचा शायद कम महत्वपूर्ण है।

मेरा मानना ​​है कि न्यूनतम :: टेस्ट :: यूनिट के लिए 1.9 प्रतिस्थापन है, जो पिछली संगतता के लिए नई लाइब्रेरी के आसपास एक रैपर के रूप में मौजूद है। मुझे लगता है कि न्यूनतमतम मार्ग लेना अधिक आगे दिखने वाला होगा।

आरएसपीईसी कुछ हद तक अलग लेता है: "परंपरागत" xUnit- प्रभावित ढांचे द्वारा कम स्पष्ट रूप से infused। यह देखने के लिए कि आप इसे पसंद करते हैं, कुछ समय व्यतीत करना उचित है।

Shoulda भी है। हालांकि मुझे नहीं पता कि यह कैसे परीक्षण किया गया है 1.9: यह टेस्ट :: यूनिट के लिए एक रैपर/एक्सटेंशन है, इसलिए शायद यह काम करेगा।

बेशक मजा वहां नहीं रुकता है: एक बार जब आप टेस्ट फ्रेमवर्क चुन लेते हैं तो आप किसी प्रकार का मॉकिंग इंजन चाहते हैं। या डेटा स्थिरता प्रतिस्थापन।

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

+1

इस बिंदु पर कंधे एक अच्छा विचार नहीं है। आरएसपीसी मैचर्स या मिनीटेस्ट अधिक 'भविष्य के सबूत' हैं। हमने सिर्फ हमारे ऐप को कंधे से न्यूनतम तक ले जाया और यह इसके लायक था। –

7

मैं एक साल या उससे भी अधिक के लिए रुपये का उपयोग कर रहा हूं। मैंने टेस्ट :: यूनिट से विशेष रूप से स्विच किया क्योंकि मैं एक मानव पठनीय तरीके से प्रिंट कर सकता हूं जिसका परीक्षण किया जा रहा है।

यह गद्य की तरह पढ़ता है। जो मेरे लिए बड़ा प्लस है। लेकिन जैसा कि सबकुछ के परिणाम अलग-अलग होंगे।

describe Model do 
    it "should do what I want" do 
    this.should == that 
    it.should be_nil 
    that.should_not be_true 
    end 
end 

इसके अलावा परीक्षण ढांचे आप भी RCov की तरह एक कवरेज उपकरण के बारे में सोचना चाहिए की reguardless। यह rspec के साथ एकीकृत करता है और आपको बताएगा कि आपके कोड में परीक्षण की कमी है।

+0

नमूना के लिए धन्यवाद (कार्रवाई में रुपेक की तस्वीर देने के लिए) और आरसीओवी सिफारिश। – Telemachus

+2

रूबी 1.9 में, अंतर्निहित मिनीटेस्ट/स्पेक उसमें समान सिंकैक्स का उपयोग करता है, और इसका लाभ है (जब आपके पास बहुत सारे परीक्षण हैं) बहुत तेज़ी से चलने के – cczona

3

मैं व्यक्तिगत रूप से rspec perfer। मैंने पाया कि व्यवहार पर मेरे परीक्षणों पर ध्यान केंद्रित करने से वास्तव में मुझे वह करने में मदद मिली जो मैं करने की कोशिश कर रहा था।

rspec के साथ जाओ और अपने परीक्षण डेटा उत्पन्न करने के लिए फैक्टरी गर्ल या मशीनिनिस्ट की तरह कुछ प्राप्त करें, फिक्स्चर का उपयोग न करें।

माइक ने जो कहा, उसके संबंध में, आरएसपीईसी परियोजना सामान्य रूप से नए संस्करणों के साथ रेल के प्रत्येक संस्करण के साथ सामान्य रूप से जारी की जा रही है ताकि इसे ढांचे के विकास के साथ बनाए रखा जा सके।

+0

सिफारिशों के लिए धन्यवाद। मुझे कुछ में से एक होना चाहिए, लेकिन रूबी के लिए रुबी में दिलचस्पी है। मेरे पास रेल में शून्य रूचि है क्योंकि मुझे वेब ऐप्स में शून्य रूचि है। ऐसा कहकर, एक परीक्षण ढांचे के लिए गतिविधि का _ton_ एक अच्छी बात नहीं हो सकती है। या कम से कम, मैं लगातार जारी नहीं करना चाहता कि यह चीज़ कैसे काम करती है। फिर भी, मैं रुपयेपेक की जांच करने जा रहा हूं। – Telemachus

+0

इसे जांचें। आप rspec का उपयोग रूबी में लिखने वाली किसी भी चीज़ का परीक्षण/spec करने के लिए कर सकते हैं, और यदि आप कभी भी रेल को छूते नहीं हैं तो भी यह एक शानदार तरीका है। – nitecoder

4

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

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

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

1

आरएसपीईसी अच्छा है लेकिन मुझे लगता है कि हाल ही में Minitest के पीछे बहुत सी बात और आंदोलन रहा है जो रुबी 1.9.x के साथ आता है। इसमें आरएसपीईसी की कई नस्लों हैं लेकिन बहुत कम और संक्षिप्त है।

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