2011-06-06 16 views
14

के खिलाफ लिखे गए कोड का परीक्षण कैसे करते हैं मैं जावा में एक एप्लीकेशन लिख रहा हूं जो एडब्ल्यूएस एस 3 पर एक फाइल अपलोड करेगा। फ़ाइल को एक तर्क में आवेदन दिया जाएगा, हार्डकोड नहीं। मैं यह सुनिश्चित करने के लिए परीक्षण लिखना चाहता हूं कि फ़ाइल वास्तव में S3 पर अपलोड हो जाती है। परीक्षण टीडीडी के लिए कोड से पहले लिखा जाएगा। (मैंने वास्तव में कोड पहले ही लिखा है, लेकिन मैं अपने सभी कामों में टीडीडी प्रथाओं को आदत के रूप में शामिल करना चाहता हूं)आप एडब्ल्यूएस एपीआई

मैं यह करने के लिए वास्तव में कैसे जाऊं? मैं जुनीट का उपयोग करूँगा क्योंकि मैं यही सबसे ज्यादा परिचित हूं।

किसी भी मदद के लिए अग्रिम धन्यवाद।

उत्तर

18

वास्तविक अपलोड करने और परीक्षण है कि यह क्या कर रहे हैं अपने एकीकरण परीक्षण, नहीं इकाई परीक्षण का हिस्सा हैं। यदि आप एस 3 एपीआई को बहुत ही पतली कक्षा में लपेटते हैं, तो आप उस वर्ग को अपने व्यावसायिक वर्गों के यूनिट परीक्षण के लिए नकल करेंगे, और आप एकीकरण परीक्षण के लिए वास्तविक कार्यान्वयन का उपयोग करेंगे।
यदि आपने निर्णय लिया है, तो व्यवसाय कक्षाएं सीधे अमेज़ॅनएस 3 इंटरफ़ेस ले जाने के लिए, फिर इकाई परीक्षण के लिए आपको उस पर नकल करना होगा।

वास्तविक खोजी परीक्षण (सीखना और सत्यापित करना) अगर और कैसे अमेज़ॅन एस 3 काम करता है तो आप वास्तव में अलग प्रयोगात्मक सेटअप में क्या करते हैं।

पीएस मैं सीधे अपने व्यापार वर्गों में अमेज़ॅन एस 3 इंटरफ़ेस का उपयोग करने की अनुशंसा नहीं करता हूं, बल्कि इसे अपने पतले इंटरफ़ेस में लपेटें, ताकि यदि आप 'बैक-एंड स्टोरेज' को बदलने का निर्णय लेते हैं तो आप इसे आसानी से बदल सकते हैं।

+1

क्या आप ऐसे पतले एस 3 रैपर का नमूना कोड दे सकते हैं? – Nayn

4

मैं जावा प्रोग्रामर नहीं हूं लेकिन शायद आप mocking में देखना चाहते हैं। MockService नामक एक सोपूआई उपकरण है जो एडब्ल्यूएस द्वारा प्रदान की गई बाहरी सेवा के मॉकिंग की अनुमति देता है।

2

Op De सिर्केल जवाब इकाई परीक्षण दायरे में अच्छा है, लेकिन अगर आप ढांचे समर्थन लिख रहे हैं या बस एडब्ल्यूएस S3 अपने परीक्षण के दौरान कॉल को चलाने के लिए की जरूरत है, तो आप किसी भी सेवा की पेशकश एडब्ल्यूएस संगत एपीआई चला सकते हैं। OpenStack उनमें से एक है और वर्चुअल मशीन में चलाया जा सकता है (DevStack देखें)।

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

यहाँ कुछ है कि S3 सेवा का पर्दाफाश कर रहे हैं:

  • S3Ninja (वास्तव में जावा में लिखा)
  • FakeS3 (रूबी)
  • s3mock (जावा एपीआई के साथ स्काला)
1

आप कर सकते थे LocalStack पर एक नज़र डालें, एक ढांचा जो एकीकरण परीक्षण के लिए पूरी तरह कार्यात्मक स्थानीय क्लाउड पर्यावरण को फैलाता है।

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

0

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

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/ec2/model/DryRunResult.html

1

सवाल लंबे समय पहले उत्तर दिया गया है, लेकिन मैं एक और दृष्टिकोण टिप्पणी करना चाहते हैं।

विभिन्न पायथन परियोजनाओं में अपने परीक्षण के दौरान मैं this library का उपयोग कर रहा हूं। मैंने इसे बहुत उपयोगी पाया है, भले ही आप जावा या स्कैला जैसी अन्य भाषाओं के साथ विकास कर रहे हों क्योंकि आप पृष्ठभूमि सर्वर सेट कर सकते हैं और सभी एडब्ल्यूएस कॉल का मज़ाक उड़ा सकते हैं।

आप README के ​​अंत में "स्टैंड-अलोन सर्वर मोड" के बारे में अधिक जानकारी प्राप्त कर सकते हैं।

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