2011-10-09 11 views
7

मैं कुछ वेब ईई विकास (रिचफैसेस, सीम 2, ईजेबी 3.1, जेपीए) में एक वेब डेवलपर समाप्त हुआ हूं। जेपीए का परीक्षण करने के लिए मैं हाइपर्सोनिक और मॉकिटो का उपयोग करता हूं। लेकिन मुझे गहरी ईजेबी ज्ञान की कमी है।टीडीडी में, ओपनईजेबी क्यों और आर्किलियन क्यों?

कुछ लोग तर्क दे सकते हैं कि हमें ओपनईजेबी और आर्किलियन का उपयोग करना चाहिए, लेकिन किस लिए? मुझे कंटेनर आश्रित परीक्षण करने की आवश्यकता कब होगी? संभावित परीक्षण परिदृश्य क्या हैं जहां मुझे ओपनईजेबी और आर्किलियन की आवश्यकता है?

मुझे प्रबुद्ध कृपया :)

उत्तर

11

इस मामले में दो पहलुओं रहे हैं।

  1. यूनिट परीक्षण। ये बहुत तेज़ होने का इरादा रखते हैं (सेकेंड में पूरे टेस्ट सूट को निष्पादित करें)। वे आपके कोड के बहुत छोटे हिस्सों का परीक्षण करते हैं - यानी एक विधि। इस प्रकार की ग्रैन्युलरिटी को प्राप्त करने के लिए, आपको यानी मॉकिटो का उपयोग करके पूरे पर्यावरण की नकल करने की आवश्यकता है। आप में कोई दिलचस्पी नहीं कर रहे हैं:
    • EntityManager लागू और डेटाबेस में संस्थाओं डाल,
    • परीक्षण लेनदेन,
    • अतुल्यकालिक आमंत्रण बनाने,
    • JMS Endpoint मार, आदि

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

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

जैसा कि आप देख, एकीकरण परीक्षणों मोटे कणों का कर रहे हैं और के रूप में वे कंटेनर में निष्पादित कर रहे हैं (या मूल रूप से: उत्पादन की तरह वातावरण में) वे बहुत धीमी कर रहे हैं। प्रत्येक कोड परिवर्तन के बाद डेवलपर द्वारा इन परीक्षणों को आम तौर पर निष्पादित नहीं किया जाता है।

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

आर्किलियन आपको अपनी पसंद के कंटेनर पर उत्पादन वातावरण बनाने की क्षमता देता है और केवल इस माहौल में परीक्षण निष्पादित करता है (डेटा स्रोतों, जेएमएस गंतव्यों का उपयोग करके, और अन्य कई कॉन्फ़िगरेशन जो आप उत्पादन वातावरण में देखने की उम्मीद करते हैं।)

उम्मीद है कि यह मदद करता है।

+0

धन्यवाद, पर्फ़ ect उत्तर। जेएमएस भाग मेरे मामले में विशेष रूप से दिलचस्प है। –

+0

खुशी मैं किसी भी मदद की हो सकती है :-) –

+2

अच्छी लेखन-अप। मैं इस बात पर उत्सुक हूं कि "बिंदु यह है कि कृत्रिम वातावरण आपको बुनियादी सेवाएं दे रहा है, लेकिन आप इसका मतलब बदलकर खत्म कर देंगे और असली कंटेनर की तुलना में कम लचीलापन समाप्त कर सकते हैं" का मतलब है। EJBContainer API के पीछे विचार यह है कि आप वास्तविक ईजेबी कंटेनर का उपयोग कर रहे हैं। अनुपालन या व्यवहार में कोई अंतर नहीं होना चाहिए। –

0

मैं इस साल Devoxx में भाग लिया और JBoss दोस्तों इस सवाल का जवाब देने का मौका मिला। परीक्षण परिदृश्य (सामान मैं कामयाब नीचे घसीटना) में से कुछ:

  • कंटेनर के विन्यास
  • कंटेनर एकीकरण
  • लेन-देन सीमाओं
  • इकाई कॉलबैक तरीकों
  • एकीकरण परीक्षणों
  • सेलेनियम रिकॉर्डिंग
संबंधित मुद्दे