2010-06-27 14 views
21

हाल ही में मैंने मॉकिटो फ्रेमवर्क पर स्विच किया और इसके साथ बहुत खुश हूं (blog-post भी देखें)। EasyMock से Mockito तक स्विच बहुत सरल था और मैंने परीक्षण को संगत बनाने में कामयाब रहे (यानी परीक्षण के मामले समान व्यवहार करते हैं)।मॉकिटो EasyMock पर पसंद करते हैं?

क्या आप मॉकिटो पर EasyMock को प्राथमिकता देने के लिए वास्तविक कारण या शूटआउट मानदंड देखते हैं? मैं जिस कोडबेस के साथ काम करता हूं, वह मैं नहीं कर सकता, लेकिन आपकी दृष्टि में रूचि रखता हूं।

+0

की संभावित डुप्लिकेट http://stackoverflow.com/questions/22697/whats-the-best-mock-framework-for- जावा – Raedwald

उत्तर

7

मैं मॉकिटो की तुलना में इज़ीमॉक से अधिक परिचित हूं, इसलिए मुझे थोड़ा खुदाई करना पड़ा। मॉकिटो में page है जो मॉकिटो पॉइंट के दृश्य से स्पष्ट तुलना करता है।

मैं इसे देखना के रूप में, Mockito के लाभ हैं:

    ठूंठ और सत्यापन
  • matchers की
  • स्पष्ट जुदाई Hamcrest पर आधारित होते हैं एक कस्टम एपीआई
  • बनाया के बजाय (यह भी JUnit द्वारा समर्थित) मॉक्स हमेशा 'अच्छा' होते हैं; कि विधि कॉल कि unmocked वापसी स्वच्छ डेटा (एक खाली सूची की तरह) हैं बजाय

में नाकाम रहने के EasyMock एक बहुत समान कार्य सेट है की है। मॉकिटो के लिए कोर विभेदक इज़ीमोक के उन क्षेत्रों पर आधारित हैं जो मॉकिटो टीम ने सोचा था कि सीमाएं या उप-इष्टतम प्रथाएं थीं।

एक कार्यात्मक बिंदु से, न तो उत्पाद स्थैतिक तरीकों का नकल करने में सक्षम है (मुझे एमबीन सर्वर के बिना परीक्षण के लिए ऐसा करने की आवश्यकता है), लेकिन उस स्थिति में आप या तो फ्रेमवर्क के शीर्ष पर पावरमैक का उपयोग कर सकते हैं।

मैं कहूंगा कि जो भी शैली आपकी परीक्षण आवश्यकताओं को फिट करेगी।

आशा है कि इससे मदद मिलती है!

6

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

इसका मतलब यह नहीं है कि इसके साथ कुछ भी गलत है। मैं जिस संस्करण का उपयोग कर रहा था वह अभी भी ठीक काम करता है, हालांकि मैंने बाद में EasyMock पर स्विच किया है।

+0

मैं छवि कर सकता हूं यह दर्दनाक था। मेरे मामले में मैं संस्करण 1.8.3 के साथ शुरू कर रहा था। रिलीज-नोट्स को देखते हुए एपीआई स्थिर हो गया है। –

22

Mockito BDD शैली इकाई परीक्षण अनुमति देने के लिए विकसित किया गया था, वह यह है कि:

  • को देखते हुए (संदर्भ में अपनी यूनिट परीक्षण चलाता है)
  • जब (घटनाओं व्यवहार आप रुचि रखते हैं का निर्माण में)
  • फिर (जिसके परिणाम आप खोज रहे हैं)।

  • को देखते हुए
  • अपेक्षा (यहाँ जहां सत्यापन किया जाता है) करने के लिए विरोध के रूप में
  • जब
  • तब (वापस जाने के लिए और क्या आप उम्मीद में लिखा है क्योंकि इस बात को देखो यहां कोई वास्तविक जानकारी नहीं है)।

IMHO यह अधिक पठनीय परीक्षण पैदा करता है, और आप (Mocks की स्थापना) संदर्भ में जो आप चला रहे हैं और व्यवहार में आपकी रुचि है के सत्यापन जैसी चीजों को अलग करने के लिए अनुमति देता है। पिछला मजाक चौखटे आप आवश्यक प्रत्येक बातचीत के लिए उम्मीदों को स्थापित करने के लिए, भले ही यह उस परीक्षण के पहलू से प्रासंगिक था या नहीं, जिसे आप उस परीक्षण में देख रहे थे या नहीं।

+2

यह सच नहीं है, आपको 'प्रत्येक बातचीत के लिए अपेक्षाएं सेट अप करने की आवश्यकता नहीं है'। Easymock के साथ आप बस एक NiceMock (createNiceMock()) सेट कर सकते हैं। वैसे भी मुझे लगता है कि परीक्षण ऑब्जेक्ट इंटरैक्शन एक अच्छा विचार है (और डिफ़ॉल्ट/सामान्य व्यवहार होना चाहिए) .. मैं शायद ही कभी अच्छे मैक्स का उपयोग करता हूं – mickthompson

+0

मॉकिटो मूल रूप से EasyMock का एक कांटा था, नाइसमोक अस्तित्व से पहले। बीडीडी में, वे परीक्षण नहीं कर रहे हैं - कक्षा के उपयोग के कुछ उदाहरणों के साथ व्यवहार के विवरण। बीडीडी का विचार कोड को पिन करने के बजाए इसे बदलने के लिए आसान और सुरक्षित बनाना है, इसलिए यह टूट नहीं जाता है। टेस्ट एक अच्छा उप-उत्पाद हैं। उस दुनिया में, प्रत्येक बातचीत का परीक्षण करने योग्य, आसानी से बदलने वाले उदाहरणों के उत्पादन के रूप में ज्यादा समझ में नहीं आता है। – Lunivore

+1

मैं अपने कोड का परीक्षण करना चाहता हूं .. फिर यदि यह पठनीय और इसे बदलने में आसान है तो यह एक और कहानी है .. मुझे नहीं लगता कि टीडीडी विशेषज्ञों की पुष्टि होगी कि 'बातचीत से ज्यादा समझ नहीं आती है'। आप हमेशा घटकों के संपर्क से कुछ उत्पन्न करते हैं ... मैं कुछ ऐसा करना पसंद करता हूं जो कम पठनीय है लेकिन सही इंटरैक्शन का परीक्षण करें .. आईएमएचओ इंटरैक्शन (पठनीय/आसानी से बदलने वाला कोड) परीक्षण और कंधे में एक मुख्य विषय है – mickthompson

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