2009-06-25 17 views
9

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

इस विशेष मामले में यह धारावाहिक वस्तुओं को डिस्क पर सहेजकर और कभी-कभी मूल क्लाइंट webservice पर असीमित प्रतिक्रियाओं को बढ़ाकर किया जा सकता है।

उन दो आवश्यकताओं को मुझे सोपूआई का उपयोग करने से रोक रहा है - ग्रोवी तर्क काफी जटिल हो जाएगा और संभवत: मैंटन करना मुश्किल होगा।

मेरे सवालों का:

1) वहाँ इस संदर्भ में नकली कार्यान्वयन कर रहे हैं किसी भी अन्य SoapUI लाभ (जैसे wsdl के नए संस्करण के लिए आसान माइग्रेशन) कस्टम जावा से अधिक।?

2) wsdl से webservice उत्पन्न करने का सबसे उचित तरीका क्या होगा और फिर भी कुछ कस्टम कार्यक्षमता, यानी। कुछ हुक संलग्न करके जो पृथक फ़ाइलों में संपादन योग्य होगा (अद्यतन wsdl से आगे ws कोड पुनर्जन्म की सुविधा के लिए)?

+0

मुझे यह भी ध्यान रखना चाहिए कि नकली न केवल परीक्षण उद्देश्यों के लिए है और इसे क्लाइंट भाग को छोड़ना चाहिए, यानी। नियमित http संचार होना चाहिए, केवल एंडपॉइंट परिवर्तन। तो मुझे लगता है कि मॉकिंग फ्रेमवर्क इस मामले में नहीं करेगा। – aaimnr

+0

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

+0

वास्तव में एकीकरण परीक्षण नहीं है, बल्कि प्रशिक्षण उद्देश्यों के लिए इसका उपयोग करने के बारे में सोचें। चूंकि फ्रंटवर्क्स का उपयोग करने वाले वेबसाइसेस वास्तव में दर्पण (संवेदनशील डेटा के बहुत से) के लिए कठिन हैं, इसलिए कुछ हल्के नकली बनाना आसान है, लेकिन राज्य को बनाए रखने के लिए पर्याप्त बुद्धिमान और इसलिए तार्किक प्रशिक्षण परिदृश्यों की संभावना प्रदान करते हैं। – aaimnr

उत्तर

2

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

मेरी आखिरी परियोजना के लिए एमुलेटर में 300+ पाइथन कोड की रेखाएं हैं, लेकिन पिछले के लिए, बहुत आसान, यह पाइथन कोड की ~ 150 लाइनें थीं।

+0

यह अच्छा लगता है और सब कुछ लेकिन यह उपलब्ध है? – Monachus

+0

साबुनयूआई मुफ्त है (वहां भी अधिक उन्नत संस्करण का भुगतान किया जाता है)। एम्यूलेटर के लिए उपयोग की जाने वाली पायथन स्क्रिप्ट्स अलग-अलग सेवा निर्दिष्ट हैं: वे HTTP सर्वर का उपयोग करते हैं और टेम्पलेट और कुछ डेटाबेस मान के आधार पर उत्तरों भरते हैं। –

5

आपको EasyMock पर देखना चाहिए, जो प्रोग्राम को क्रमशः बनाने के लिए अनुमति देता है। अपने मोजे के लिए बहुत जटिल व्यवहार निर्दिष्ट करना संभव है।

3

संभवतः आप अपने ग्राहक में कुछ प्रकार के जेनरेट किए गए स्टब का उपयोग कर रहे हैं? आपको मॉकिंग एपीआई (जेएमॉक या इज़ीमॉक) में से एक के साथ स्टब करना चाहिए और कक्षा-अंडर-टेस्ट में नकली इंजेक्ट करना चाहिए।

सर्वर-साइड टेस्ट पर कॉल करने वाले वर्ग पर, किसी भी ऑब्जेक्ट के मैक्स इंजेक्शन देने से यह अपनी नौकरी करने के लिए उपयोग कर सकता है।

एक तरफ के रूप में आपको सभी कॉल यूनिट परीक्षण स्थानीय (इन-प्रोसेस) में रखने का प्रयास करना चाहिए। यह किसी भी ऑब्जेक्ट से रिटर्न वैल्यू को नियंत्रित करना आसान बनाता है, कक्षा-अंडर-टेस्ट पर निर्भर करता है और जब परीक्षण सूट बढ़ता है, तो यूनिट परीक्षण आपकी बिल्ड प्रक्रिया में बोतल की गर्दन बनने से रोकने में मदद करेगा।

डब्ल्यूएसडीएल अपाचे एक्सिस से जावा क्लास (एसएस) उत्पन्न करने के संबंध में डब्लूएसडीएल 2 जावा कहा जाता है, जो क्लाइंट स्टब्स को पहले बताता है। इस तरह की उपयोगिता वेब सेवा ढांचे में आम है लेकिन अब इसे बदल दिया गया है क्योंकि ईजेबी 3 वेब सेवाओं ने javax.xml.rpc.ServiceFactory पेश किया है।

ईजेबी 3 वेब सेवाओं और ग्राहकों पर एक ट्यूटोरियल है (http://www.theregister.co.uk/2007/01/23/ejb_web_services/)।

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