शीर्षक के अनुसार, बस सोच रहा है कि परीक्षण के लिए आसान तरीका है या नहीं, अगर किसी विधि को उसके जीवनकाल के दौरान नहीं कहा जाता है।EasyMock: परीक्षण में उस विधि का परीक्षण
उत्तर
डिफ़ॉल्ट रूप से, Easymock किसी भी विधियों के लिए अपवाद फेंक देगा जिसे कहा जाता है कि आपने स्पष्ट रूप से अपेक्षाओं को निर्धारित नहीं किया है।
EasyMock documentation से:
अच्छा Mocks
नकली द्वारा लौटाए गए एक नकली वस्तु पर() सभी तरीकों के लिए डिफ़ॉल्ट व्यवहार सभी अप्रत्याशित विधि कॉल के लिए एक AssertionError फेंक रहा है। यदि आप एक "अच्छा" मॉक ऑब्जेक्ट चाहते हैं जो डिफ़ॉल्ट रूप से सभी विधि कॉल की अनुमति देता है और उचित रिक्त मान (0, शून्य या गलत) देता है, तो इसके बजाय niceMock() का उपयोग करें।
तो आप जो पूछ रहे हैं वह डिफ़ॉल्ट व्यवहार है।
मुझे पता है कि यह प्रश्न बहुत पुराना है लेकिन मेरे पास ओपी के समान प्रश्न था और कुछ और आसपास देख रहे थे। मुझे निम्नलिखित समाधान मिला:
अपने EasyMock घोषणा के अंत में .andThrow(new AssertionFailedError()).anyTimes();
जोड़कर परीक्षण मॉक विधि कहलाता है जब परीक्षण विफल हो जाएगा।
यह कारण है कि यह नाइसमैक का उपयोग न करने और अनमॉक विधि कॉल के कारण परीक्षण विफल होने की वजह से बेहतर है क्योंकि यह आपको विशेष रूप से परीक्षण करने की अनुमति देता है कि दिए गए परिदृश्य में XYZ विधि को नहीं बुलाया गया था।
मैं इस जवाब के लिए डेविड वालेस क्रेडिट देना चाहता हूं। मुझे निम्न पोस्ट पर उनके उत्तर में यह समाधान मिला: Test that void method didn't get called with EasyMock
मेरा मानना है कि यह स्वीकार्य उत्तर होना चाहिए। कारण यह है कि यूनिट परीक्षण अक्सर नई आवश्यकताओं के साथ बदल जाते हैं और यह याद करना बहुत आसान है कि नकली अपेक्षा क्यों सेट नहीं की गई थी। यह समाधान गायब विधि कॉल को स्पष्ट करता है, इस प्रकार कोड बदलने वाले व्यक्ति से अधिक ध्यान देने की मांग करता है। – mindreader
- 1. परीक्षण करें कि शून्य विधि को EasyMock
- 2. जुनीट Easymock अप्रत्याशित विधि कॉल
- 3. परीक्षण वर्ग निजी क्षेत्र में EasyMock नकली इंजेक्षन कैसे करें
- 4. जैस्मीन + विरासत विधि का परीक्षण
- 5. एसिंक विधि कॉल का परीक्षण
- 6. EasyMock
- 7. EasyMock
- 8. EasyMock के समकक्ष। EasyMock में अनदेखा करें
- 9. परीक्षण जावास्क्रिप्ट का परीक्षण
- 10. EasyMock उसी परीक्षण में कई अलग-अलग ऑब्जेक्ट्स को वापस करने की विधि
- 11. पुनर्रचना स्थिर विधि/परीक्षण
- 12. यूनिट परीक्षण फ़ैक्टरी विधि
- 13. Moq परीक्षण शून्य विधि
- 14. EasyMock: मज़ाक उड़ाया वस्तु वास्तविक विधि
- 15. परीक्षण स्टूडियो एक्सटेंशन का परीक्षण
- 16. यूनिट एक नियंत्रक विधि का परीक्षण?
- 17. एक एकल परीक्षण विधि चलाना
- 18. PowerMock + EasyMock
- 19. फोनगैप एप्लिकेशन का आईपैड परीक्षण - मुख्य विधि में समस्या
- 20. मैं विधि ऑब्जेक्ट में विधियों का परीक्षण कैसे करूं?
- 21. मैं सी ++ में संरक्षित विधि का परीक्षण कैसे करूं?
- 22. यूनिट परीक्षण और परीक्षण डेटाबेस का उपयोग
- 23. परीक्षण कक्षा वर्ग कंक्रीट विधियों का परीक्षण
- 24. वेबसाइट का परीक्षण प्रदर्शन
- 25. सेवा परत परीक्षण
- 26. एकीकरण कैनवास का परीक्षण
- 27. किसी विधि के लिए प्रोटोकॉल का परीक्षण कैसे करें?
- 28. माइक्रोसॉफ्ट यूनिट परीक्षण। क्या परीक्षण विधि निकाय से परीक्षण छोड़ना संभव है?
- 29. Asp.net एमवीसी परीक्षण परीक्षण?
- 30. किसी विधि से एक्सएमएल की वैधता का परीक्षण कैसे करें?
मुझे डिफ़ॉल्ट व्यवहार परेशान लगता है क्योंकि परीक्षण में जांच की जा रही जांच में "आवश्यकता" बहुत आसानी से समाप्त होती है। मैंने एक बार एक लूप के बाहर एक getSomething() कॉल को स्थानांतरित करने का एक सरल रिफैक्टर किया, जिसके कारण परीक्षण विफल हो गया क्योंकि मैंने फोन नहीं किया था 40 बार (!), और "गैर-अच्छे" मोक्स इस प्रकार के परीक्षण को प्रोत्साहित करते हैं (इसके बाद से अगर मैं रिफैक्टरिंग से पहले केवल एक कॉल की उम्मीद करता तो असफल हो जाएगा)। –
@Stein: सहमत हुए। यूनिट परीक्षणों को ठीक से तैयार किया जाना चाहिए, आदर्श रूप से केवल एक चीज का परीक्षण करना चाहिए। "गैर-अच्छे" मोक्स इसे हतोत्साहित करते हैं। –
प्रश्न के मेरे पढ़ने से, ओपी एक मॉक चाहता है जो इसे कॉल होने पर सत्यापन में विफल रहेगा। अच्छा मोक्स ओपी चाहता है जो नहीं चाहता है क्योंकि जब परीक्षण के दौरान एक अच्छा मजाक कहा जाता है तो यह अभी भी सत्यापन पास करता है। –