2009-11-18 9 views
5

जब मैं अपना जूनिट 4 परीक्षण चलाता हूं तो अब मैं @RunWith(SpringJUnit4ClassRunner.class) एनोटेशन का उपयोग करता हूं जो मुझे स्प्रिंग बीन्स को मेरी टेस्ट क्लास में इंजेक्ट करने की अनुमति देता है।वसंत JUnit4 और JMock का उपयोग

मैं जेएमॉक 2 ढांचे का उपयोग करना चाहता हूं (जिसमें मेरा कोई वास्तविक अनुभव नहीं है) लेकिन उदाहरण के लिए मुझे निम्नलिखित @RunWith(JMock.class) की आवश्यकता है।

तो मेरा सवाल है कि मैं अपने जेनिट 4 परीक्षणों के साथ जेएमॉक और स्प्रिंग का उपयोग कर सकता हूं और यदि ऐसा है तो कैसे? उदाहरण के लिए एक वसंत परीक्षण धावक है जो जेएमॉक का भी समर्थन करता है?

धन्यवाद,

रिचर्ड

उत्तर

6

आप स्पष्ट रूप से अपने परीक्षण के अंत में context.assertIsSatisfied() कॉल कर सकते हैं, उदाहरण के लिए एक @After विधि में,।

jmock.org साइट पर, किसी भी कोड उदाहरण पर "अन्य" टैब का चयन करें और दस्तावेज़ आपको दिखाएगा कि जेनिट फ्रेमवर्क एकीकरण के बिना jmock का उपयोग कैसे करें।

जेएमॉक का अगला संस्करण जुनीट 4.7 में नए "नियम" तंत्र का समर्थन करेगा, और इसलिए आपको कस्टम टेस्ट धावक का उपयोग करने की आवश्यकता नहीं होगी।

+0

यह समझ में आता है - प्रतिक्रिया के लिए धन्यवाद। –

+1

जेएमॉक के नवीनतम संस्करण में एक @ नियम विकल्प है, जुनीटरूलेमॉकरी, जो धावक की आवश्यकता से बचाता है –

1

यदि समस्या @RunWith से संबंधित है, तो आप इसके बजाय JMockit Expectations API का उपयोग कर सकते हैं। यह जेएमॉक के समान है कि उम्मीदों को new Expectations() {...} ब्लॉक के अंदर भी दर्ज किया गया है, लेकिन @RunWith (न ही बेस टेस्ट क्लास) के उपयोग की आवश्यकता नहीं है। इसके अतिरिक्त, context.checking(...) विधि कॉल को उम्मीद ब्लॉक को लपेटने के लिए कोई कॉल नहीं है।

1

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

दूसरी ओर, मुझे स्प्रिंग बीन्स की आवश्यकता होगी यदि मैं एकीकरण परीक्षण कर रहा था, यह देखने के लिए कि पूरी चीज एक साथ वायर्ड या किसी तृतीय-पक्ष घटक के खिलाफ परीक्षण कैसे करती है।