2011-12-22 19 views
26

का परीक्षण करने के लिए जूनिट मैं स्प्रिंग एप्लिकेशन (स्प्रिंग 3.0) पर काम कर रहा हूं और स्तरित आर्किटेक्चर यानी Controller -> Service -> DAO layers पर काम कर रहा हूं।स्प्रिंग सेवा और डीएओ परत

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

क्या कोई मुझे कुछ सहायक संसाधन प्रदान कर सकता है?


संपादित करें:
लगता Mockito अच्छा विकल्प है की तरह। वसंत में इसका उपयोग करने के लिए कोई अच्छा लिंक।

सुझाव देने के लिए एलेक्स धन्यवाद।

+0

CAREFUL। लिंक "मॉकिंग सर्विस लेयर" अब एक दुर्भावनापूर्ण पृष्ठ पर जाता है। – Cenobyte321

+0

@ Cenobyte321 धन्यवाद, लिंक हटा दिया गया। – xyz

+0

यदि आप हाइबरनेट और वसंत बूट का उपयोग करते हैं, तो जब आप अपना परीक्षण शुरू करते हैं तो स्मृति डेटाबेस में H2 को कॉन्फ़िगर क्यों नहीं किया जाता है? फिर अपने टेस्ट क्लास पर एनोटेशन स्प्रिंगबूटटेस्ट ऑटोकॉन्फिगरटेस्ट एंटीटी मैनेजर ट्रांजैक्शनल का उपयोग करें और केवल अपने दाओ को स्वचालित करें और आप वास्तव में नकली के बिना इसका परीक्षण कर सकते हैं।बेहतर आप MockMvc का उपयोग कर सकते हैं और नियंत्रक से अपने पूरे webservice का परीक्षण कर सकते हैं (और इसलिए मुझे लगता है कि आप नियंत्रक उपयोग सेवा जो दाओ का उपयोग करते हैं) – amdev

उत्तर

25

संसाधनों के संदर्भ में परीक्षण पर वसंत दस्तावेज़ीकरण बहुत अच्छा है। यह here पाया जा सकता है।

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

फिर एकीकरण के लिए अपने डीएओ को एक डेटाबेस के खिलाफ परीक्षण करने के लिए आप उस संदर्भ दस्तावेज में वर्णित वसंत लेनदेन परीक्षण उपयोगिता का उपयोग कर सकते हैं।

+0

धन्यवाद। मुझे मॉकिटो से अवगत नहीं था। आप कोशिश करेंगे और अपडेट करेंगे। – xyz

+0

मुझे मॉकिटो बहुत शक्तिशाली और उपयोग करने में आसान पाया गया है। मेरे सभी सेवा इकाई परीक्षण इसका उपयोग करते हैं। –

+0

बस देखा, कोशिश की और इसे पसंद आया। धन्यवाद दोस्त। स्प्रिंग सेवा परीक्षण के लिए मॉकिटो का उपयोग करने के लिए कोई अच्छा लिंक? – xyz

4

संसाधनों के बारे में ज्यादा पता नहीं है, लेकिन यह अगर आप अपने दाव + वसंत सेटअप अच्छी तरह से है करने के लिए है कि मुश्किल नहीं है। आपको निम्नलिखित की आवश्यकता होगी:

  1. जूनिट निर्भरता मोटे तौर पर।

    <dependency> 
        <groupId>junit</groupId> 
        <artifactId>junit</artifactId> 
        <version>4.8.2</version> 
    </dependency> 
    
  2. परीक्षण वर्ग है, जो आप src/परीक्षण/जावा के अंदर जगह: Maven, ऐसा ही कुछ के साथ

    @TransactionConfiguration(defaultRollback = true) 
    @ContextConfiguration({ "classpath:test-spring-context.xml" }) 
    @Transactional 
    @RunWith(SpringJUnit4ClassRunner.class) 
    public class SomeTests { 
        // ... 
    } 
    
  3. अपने वसंत सेटअप प्रसंग फ़ाइल अपने डीएओ डेटा स्रोत के अंदर रखा संदर्भित src/परीक्षण/संसाधन। अपने परीक्षण वसंत-context.xml में कहीं:

    <import resource="datasource-test.xml" /> 
    

अब ग्रहण में उदाहरण के लिए यदि आप एक JUnit परीक्षण के रूप में परियोजना चला सकते हैं।

अधिक जानकारी चाहिए? क्या यह समाधान लागू है?

+0

धन्यवाद। मैं सेवा परत का परीक्षण कैसे कर सकता हूं? – xyz

+0

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

+0

हां। सेवा से मेरा मतलब कक्षा है जो डीएओ विधियों का आह्वान करता है। – xyz

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