दिलचस्प पोस्ट
'वंचित प्रत्यक्ष आधार' एकाधिक विरासत के कारण होता है सेवा वर्ग से गतिविधि वर्ग विधि कॉलिंग कैसे लाइन एनीमेशन चिकनी बनाने के लिए? PHP में स्क्रिप्ट निष्पादन समय को ट्रैक करना बूटस्ट्रैप 3 ग्लाइफ़िकॉन काम नहीं कर रहे हैं बिटमैप में स्वीकार्य विधि में GDI + में सामान्य त्रुटि आई ASP.NET MVC में फ़ाइल आकार अपलोड की गई अनुमति से अधिक होने पर कस्टम त्रुटि पृष्ठ प्रदर्शित करें दो UIImage वस्तुओं की तुलना कैसे करें एंड्रॉइड में अस्थायी फाइल बनाना क्या asp.net के बाहर रेज़र व्यू इंजन का उपयोग करना संभव है AJAX पृष्ठ प्रगति डाउनलोड करें ObjectOutputStream पर समान लेकिन संशोधित ऑब्जेक्ट भेजना Xcode स्वचालित रूप से ब्रिजिंग हेडर नहीं बना रहा है? ऑब्जेक्ट्स और टाइमर चलाना डाटाब्लूल से ब्लॉब?

जावा के लिए सबसे अच्छा नकली ढांचे क्या है?

जावा में नकली वस्तुओं का निर्माण करने के लिए सबसे अच्छा ढांचा क्या है? क्यूं कर? प्रत्येक ढांचे के पेशेवरों और विपक्ष क्या हैं?

Solutions Collecting From Web of "जावा के लिए सबसे अच्छा नकली ढांचे क्या है?"

मॉकिटो का उपयोग करके मुझे अच्छी सफलता मिली है

जब मैंने जेएमकॉक और इज़ेकॉक के बारे में सीखने की कोशिश की, तो मुझे सीखने की अवस्था थोड़ी सी खड़ी हो गई (हालांकि शायद यह सिर्फ मुझे)।

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

Mockito मुखपृष्ठ से यहां (संक्षिप्त) उदाहरण दिया गया है:

import static org.mockito.Mockito.*; List mockedList = mock(List.class); mockedList.clear(); verify(mockedList).clear(); 

यह उसके मुकाबले ज्यादा सरल नहीं है

एकमात्र प्रमुख नकारात्मक पक्ष मैं सोच सकता हूं कि यह स्थैतिक तरीकों का नकली नहीं होगा

मैं पावरमॉक के निर्माता हूं इसलिए मुझे यह सलाह देना चाहिए! 🙂

पावरमॉक ने स्थिर तरीके , अंतिम और यहां तक ​​कि निजी तरीकों का नकली करने की क्षमता के साथ EasyMock और Mockito दोनों का विस्तार किया है EasyMock समर्थन पूरा हो गया है, लेकिन Mockito प्लगइन को कुछ और काम की आवश्यकता है। हम जेएमक समर्थन को भी जोड़ने की योजना बना रहे हैं।

पावरमॉक का उद्देश्य अन्य चौखटे को बदलने के लिए नहीं है, बल्कि इसका उपयोग मुश्किल हालात में किया जा सकता है जब अन्य चौखटे मजाक की अनुमति नहीं देते। पावरमॉक में अन्य उपयोगी सुविधाएं भी शामिल हैं जैसे स्थिर प्रारंभिक और कन्स्ट्रक्टर को दबाने

JMockit परियोजना स्थल वर्तमान मजाक करने वाले टूलकिट के लिए बहुत अधिक तुलनात्मक जानकारी प्रदान करती है।

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

मैं जेएमोकित के साथ सफलता हासिल कर रहा हूं

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

 import mockit.Mockit; ... Mockit.redefineMethods(MyClassWithStaticInit.class, MyReplacementClass.class); ... class MyReplacementClass { public void $init() {...} // replace default constructor public static void $clinit{...} // replace static initializer public static void myStatic{...} // replace static method // etc... } 

इसमें रिकार्ड / प्लेबैक परिदृश्यों के साथ ही एक एक्सपेक्टेशन इंटरफेस की अनुमति है:

 import mockit.Expectations; import org.testng.annotations.Test; public class ExpecationsTest { private MyClass obj; @Test public void testFoo() { new Expectations(true) { MyClass c; { obj = c; invokeReturning(c.getFoo("foo", false), "bas"); } }; assert "bas".equals(obj.getFoo("foo", false)); Expectations.assertSatisfied(); } public static class MyClass { public String getFoo(String str, boolean bool) { if (bool) { return "foo"; } else { return "bar"; } } } } 

नकारात्मक पक्ष यह है कि उसे जावा 5/6 की आवश्यकता है

तुम भी Groovy का उपयोग कर परीक्षण पर एक नज़र भी देख सकते हैं ग्रूवी में आप 'ए' ऑपरेटर का उपयोग करके आसानी से जावा इंटरफेस का नकली कर सकते हैं:

 def request = [isUserInRole: { roleName -> roleName == "testRole"}] as HttpServletRequest 

इस मूलभूत कार्यक्षमता के अलावा, ग्रूवी शक्तिशाली MockFor और StubFor कक्षाओं सहित मजाक के सामने पर बहुत कुछ प्रदान करता है।

http://docs.codehaus.org/display/GROOVY/Groovy+Mocks

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

एक और अच्छी बात यह है कि इंटरफेस और कार्यान्वयन के वर्गों को उसी तरह से नियंत्रित किया जाता है, जो कि EasyMock में नहीं है, जहां भी आपको एक EasyMock क्लास एक्सटेंशन का उपयोग करने के लिए याद रखने की आवश्यकता है (और जांचें)।

मैंने हाल ही में जेमोकित पर एक त्वरित नज़र लिया है, और जब सुविधाओं की कपड़े धोने की सूची बहुत व्यापक है, मुझे लगता है कि इसका मूल्य परिणामी कोड की सुवाह्यता है, और अधिक लिखना है।

मेरे लिए, मकोईटो मिठाई जगह को हिट करता है, लिखना और पढ़ना आसान होता है, और अधिकांश स्थितियों से निपटने के लिए अधिकांश कोड की आवश्यकता होगी पावरमॉक के साथ मॉकिटो का उपयोग करना मेरी पसंद होगी

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

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

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

मुझे जेएमक पसंद है क्योंकि आप अपेक्षाओं को स्थापित करने में सक्षम हैं। यह पूरी तरह से जाँच से अलग है कि क्या कुछ नकली पुस्तकालयों में एक विधि बुलाया गया था। जेएमक का उपयोग करके आप बहुत परिष्कृत उम्मीदें लिख सकते हैं। जमैका चीट-शीट देखें

हां, मॉकिटो एक महान फ्रेमवर्क है मैं अपने परीक्षणों को सेटअप करने के लिए हॅमक्रिस्ट और Google गाइड के साथ इसका उपयोग करता हूं

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

उदाहरण के लिए, निम्नलिखित गुण मठ.sqrt विधि का परीक्षण करता है, यह देखने के लिए कि क्या किसी भी सकारात्मक संख्या n वर्ग के वर्गमूल एन के बराबर है।

 val propSqrt = forAll { (n: Int) => (n >= 0) ==> scala.Math.sqrt(n*n) == n } 

जब आप propSqrt.check() कॉल propSqrt.check() , तो ScalaCheck सैकड़ों पूर्णांक बनाता है और प्रत्येक के लिए आपकी संपत्ति की जांच करता है, यह भी स्वचालित रूप से यह सुनिश्चित करने के लिए कि किनारे के मामलों को अच्छी तरह से कवर किया गया है

हालांकि ScalaCheck Scala में लिखा है, और स्कला संकलक की आवश्यकता है, इसके साथ जावा कोड का परीक्षण करना आसान है। कार्यात्मक जावा में Reductio ढांचा एक ही अवधारणाओं के शुद्ध जावा कार्यान्वयन है।

Mockito भी stubbing तरीकों का विकल्प प्रदान करता है, मिलान तर्क (जैसे किसी भी () (और) किसी भी स्ट्रिंग ()), invocations की संख्या (बार (3), atLiestOnce (), कभी ()), और अधिक की पुष्टि

मैंने यह भी पाया है कि मॉकिटो सरल और साफ है

एक बात मुझे मकोईटो के बारे में पसंद नहीं है, यह है कि आप स्थिर तरीकों को नहीं रोक सकते

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

मैंने जेएमॉक के माध्यम से मोजे का उपयोग करना शुरू कर दिया, लेकिन अंततः ईज़ीमॉक का उपयोग करने के लिए संक्रमण इज़ेकॉक केवल यही था, एशीज़ियर – और एक सिंटैक्स प्रदान किया जिसने अधिक प्राकृतिक महसूस किया। मैंने तब से स्विच नहीं किया है