2012-09-18 12 views
47

मैंने अभी तक न्यूनतम Railscast देखा है।न्यूनतम और रुपेक

रेल ऐप का परीक्षण करने के लिए आरएसपीसी बनाम मिनीटेस्ट का उपयोग करने के लिए पेशेवर और विपक्ष क्या हैं? मैं आरएसपीसी से मिनीटेस्ट में किस फीचर को परिवर्तित कर दूंगा?

+0

उदा। देखें http://stackoverflow.com/questions/8423227/migrating-from-rspec-to-minitestspec – matt

+0

शायद इन 2 प्रश्नों को विलय किया जाना चाहिए, क्या प्रश्न विलय करने का कोई तरीका है? –

+10

+12 वोटों के साथ बंद !!! खोलने के लिए मतदान। –

उत्तर

69

मैं आरएसपीईसी डेवलपर्स में से एक हूं, और कभी भी कम से कम उपयोग नहीं किया है, इसलिए इस जवाब को पढ़ने के दौरान मेरी पूर्वाग्रहों को ध्यान में रखें।

बड़े पैमाने पर, आरएसपीईसी की शक्ति इस तथ्य से आती है कि यह प्रथम श्रेणी की वस्तुओं में इतनी सारी परीक्षण अवधारणाओं को दर्शाती है। जहां टेस्ट :: यूनिट और न्यूनतम उपयोग करने के लिए सरल तरीकों का उपयोग करते हैं, आरएसपीईसी प्रथम श्रेणी की मैचर ऑब्जेक्ट्स का उपयोग करती है जो अस्वीकृति, आत्म-विवरण और अधिक का समर्थन करती हैं। आरएसपीईसी के उदाहरण प्रथम श्रेणी की वस्तुएं हैं जो समृद्ध मेटाडेटा का समर्थन करती हैं; minitest/spec compiles it सरल विधियों में अवरुद्ध है, जो एक ही तरह के समृद्ध मेटाडेटा का समर्थन नहीं करते हैं। आरएसपीईसी प्रथम श्रेणी के निर्माण (साझा उदाहरण समूह) का उपयोग करके साझा व्यवहार निर्दिष्ट करने का समर्थन करता है जो तर्क स्वीकार करता है; w/minitest आप inheritance or a mixin to re-use tests का उपयोग कर सकते हैं, लेकिन इसमें समान श्रेणी के प्रथम श्रेणी का समर्थन नहीं है। आरएसपीईसी में एक स्पष्ट फॉर्मेटर एपीआई है (और इसका उपयोग करने वाले कई तृतीय पक्ष प्रारूपक हैं); मुझे पहले श्रेणी के फॉर्मेट एपीआई के समान प्रकार के बारे में पता नहीं है।

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

यहाँ कुछ विशिष्ट सुविधाओं RSpec है कर रहे हैं मुझे विश्वास है कि minitest का अभाव:

  • before(:all) हुक (ध्यान दें कि यह है कि शायद ही कभी इस्तेमाल किया जाना चाहिए RSpec का एक उपयोगकर्ता बिजली की सुविधा है, मैं केवल कुछ ही पर यह प्रयोग किया है RSpec का उपयोग कर के कई वर्षों)
  • around(:each) हुक में अवसरों
  • साझा उदाहरण समूहों
  • साझा संदर्भों
  • रिच मेटाडाटा समर्थन है कि यू हो सकता है नियंत्रित करने के लिए कि कौन से उदाहरण चलते हैं, उदाहरण के समूह ने संदर्भों को साझा किया है, जिसमें उदाहरण समूह मॉड्यूल मिश्रित हो जाते हैं।
  • मॉकिंग सुविधाओं की विस्तृत श्रृंखला w/rspec-mocks के लिए एकीकृत समर्थन; न्यूनतम: मॉक तुलना में कहीं अधिक सरल और अधिक सीमित है।
  • आरएसपीईसी rspec-fire है, जो कि कमाल है। Minitest का उपयोग करने का

लाभ:

  • यह तो आप कुछ भी अतिरिक्त स्थापित करने की आवश्यकता नहीं है मानक पुस्तकालय में बनाया गया है।
  • या तो इसका उपयोग def test_blah या it 'blah' शैलियों में किया जा सकता है।
  • कोड बेस बहुत छोटा और सरल है। आरएसपीसी, इसकी बुढ़ापे और अतिरिक्त सुविधाओं के आधार पर तुलना में बड़ा है।
  • आरएसपीईसी से तेज़ न्यूनतम लोड (आरएसपीईसी की तुलना में कोड की लगभग 4 फाइलें हैं जिनमें कई फाइलें 3 रत्नों में फैली हुई हैं) - लेकिन ध्यान दें कि आरएसपीईसी धीमी गति से नहीं है; इन दिनों मेरी अधिकांश परियोजनाओं में, मुझे दूसरी बार (और अक्सर 500 एमएस के तहत) में आरएसपीसी से टेस्ट फीडबैक मिलता है।

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

एक आखिरी बात: यदि मिनीटास्ट के विशिष्ट पहलू आपको बेहतर पसंद करते हैं, लेकिन अन्य चीजें जिन्हें आप आरएसपीईसी के बारे में बेहतर पसंद करते हैं, तो उन्हें आसानी से मिश्रित और मिलान किया जा सकता है। यदि आप रुचि रखते हैं I wrote a blog post about this

+0

अद्भुत स्पष्टीकरण के लिए धन्यवाद। –

+2

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

4

मैंने Test/Unit से shoulda के साथ spec-style Minitest में परिवर्तित किया, और यह भुगतान करता है। यह बॉयलरप्लेट से दूर है और वे कहते हैं कि यह गति में भी सुधार करता है। मैंने वास्तव में कभी भी आरएसपीईसी का इस्तेमाल नहीं किया। इसके बजाए, मैंने अपना खुद का आदिम परीक्षण और नकली ढांचा लिखा (केवल मजाक करने के उद्देश्य के लिए, मैंने इसे मिनीटेस्ट पर स्विच करने पर छोड़ दिया)। मुझे लगता है कि आरएसपीईसी में स्टबिंग/मॉकिंग अधिक उन्नत हो सकती है, इसलिए यदि आप इसे पहले से ही सीखा है, तो बस इसका इस्तेमाल जारी रखें। अन्यथा, मिनीटेस्ट के साथ चिपके रहें, जो आपको आरएसपीसी के अज्ञानी लोगों के साथ सहयोग करने में सक्षम बनाएगा, जैसे कि मेरे।

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