2009-06-30 14 views
5

का उपयोग कर डेटाबेस का मज़ाक उड़ाते हुए हमारे एप्लिकेशन में एक सेवा परत और एक डीएओ परत है, जिसे स्प्रिंग बीन्स के रूप में लिखा गया है।टेस्ट केस: स्प्रिंग बीन्स

सेवा परत का परीक्षण जब मैं कोई वास्तविक डेटाबेस पर निर्भर रहना पड़ता है कि

तो जब मैं सेवा परत मैं परीक्षण कर रहा हूँ डीएओ परत के लिए एक 'नकली' Impl बनाकर तो मैं मजाक कर रहा हूँ नहीं करना चाहते मॉक डीएओ बीन्स पर सेवा परत सेम श्रृंखला और उत्पादन में- 'असली' डीएओ बीन्स

क्या यह एक अच्छा विचार है? डेटाबेस परत को नकल करने के तरीके पर कोई वैकल्पिक सुझाव?

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

उत्तर

5

यह एक तकनीक है जिसे हम कई सालों से उपयोग कर रहे हैं। ध्यान दें कि आप कुछ विकल्प हैं जब यह डीएओ इंटरफेस मजाक की बात आती है:

  • असली जावा वर्गों
  • एक गतिशील मजाक ढांचे जैसे jMock (मेरी प्राथमिकता) का प्रयोग करें या EasyMock
के रूप में नकली उदाहरणों बनाएं

डायनामिक मॉकिंग फ्रेमवर्क आपको विभिन्न प्रकार की परिस्थितियों (कोई डेटा, 1 पंक्ति, कई पंक्तियां, अपवाद फेंकने) को रोकने के लिए जटिल कक्षाएं बनाने के बिना आपको

1

डेटाबेस का परीक्षण करने के लिए मॉकिंग का उपयोग करने का एक शानदार तरीका है। मुझे नहीं लगता कि कोई वैकल्पिक सुझाव जरूरी है; मुझे लगता है कि आपको पहले से ही सही तकनीक मिल गई है!

1

परीक्षण करने के लिए जटिल कक्षाएं बनाने के बिना अनुमति देता है। सही रास्ते पर। मैं सवाल यह स्पष्ट रूप से, परीक्षण डीएओ परतों के बारे में सर्वोत्तम प्रथाओं के लिए समर्पित है के रूप में एक डेटाबेस मजाक Nnot तो डीएओ परत मजाक जब सेवाओं का परीक्षण के रूप में सरल लगता है समझ में के रूप में पसंद के

मेरे मजाक ढांचे Mockito

0

है।

व्यक्तिगत रूप से मैं प्रश्न वापस उठाऊंगा यदि वास्तव में क्लासिकल यूनिट परीक्षण अर्थ में डीएओ परत का परीक्षण करना उचित है। यदि आप अपनी डीएओ परत को सही तरीके से डिज़ाइन करते हैं तो यह क्वेरी के लिए डोमेन ऑब्जेक्ट्स मैप करने से कहीं अधिक नहीं करता है।

मैंने कहा कि मैं हमेशा एक एम्बेडेड डेटाबेस का उपयोग करने का प्रस्ताव करता हूं जैसे एच 2, एचएसक्यूएल या जावा 6 एम्बेडेड डर्बी इस तरह की चीजों को करने के लिए डेटासेट का मज़ाक उड़ाते हुए वास्तव में एक एम्बेडेड डेटाबेस को बढ़ाने से कहीं अधिक प्रयास है। वसंत 3 फ्लाई पर ऐसे डेटाबेस बनाने के लिए एक अच्छा निर्माता पैटर्न प्रदान करेगा। इसके आरसी 1 में सेटअप को आसान बनाने के लिए jdbc नेमस्पेस भी पेश किया जाएगा। विवरण के लिए this one देखें।

लेकिन एम्बेडेड डेटाबेस का उपयोग कर वर्तमान वसंत 2.5 शाखा के साथ भी डेटाबेस जेएआर लेने और DataSource स्थापित करने की बात है।

+0

प्रश्न में स्पष्टीकरण देखें। धन्यवाद –

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