2009-06-15 22 views
8

मेरे पास मेरे ऐप में कुछ विधियां हैं जो http अनुरोध करते हैं। यूनिट परीक्षणों के लिए नेटवर्क विफलताओं और खराब प्रतिक्रियाओं को अनुकरण करने का कोई अच्छा तरीका है?HTTP अनुरोधों को बनाने वाले परीक्षण विधियां

उत्तर

12

उपयुक्त Mock Objects आप इस तरह के सिमुलेशन आसानी से प्रदर्शन देना चाहिए अपने वायरलेस राउटर बंद कर देते हैं; यदि आप अवधारणा से अपरिचित हैं, तो यहां एक अच्छा tutorial है।

+0

+1 इसे मॉक करें, खींचने वाले तारों के साथ गड़बड़ न करें। –

+4

ट्यूटोरियल लिंक की समय सीमा समाप्त हो गई है। – tokhi

1

नेटवर्क विफलताओं के लिए पहले आपके कंप्यूटर ईथरनेट केबल (या डी/सी वायरलेस) को अनप्लग करने से पहले कुछ भी धड़कता नहीं है और फिर जो भी केबल आपको क्लाउड तक पहुंच प्रदान करता है उसे अनप्लग करना।

यदि खराब प्रतिक्रियाओं से आप HTTP त्रुटियों का मतलब है तो आप एएसपी स्क्रिप्ट लिख सकते हैं जो हमेशा विशिष्ट त्रुटियों को फेंक देगा। यदि आप विकृत HTTP पैकेट का परीक्षण करना चाहते हैं तो आपको ऐसा करने के लिए एक सरल सॉकेट ऐप लिखना होगा।

+0

यह सुनिश्चित नहीं है कि आप अपने स्वचालित बिल्ड सिस्टम में केबल अनप्लगिंग प्रक्रिया को कैसे एकीकृत करते हैं ;-) – assylias

0

अपने लैन तार बाहर खींच, या जब अनुरोध किए जा रहे हैं :)

1

क्या आपने HTTPUnit और JWebUnit को आजमाया है?

+0

प्रश्न पुन: प्रश्न के उत्तर का उत्तर नहीं –

-1

हम इस स्थिति में क्या करते हैं वह कॉल है जो कॉल कर रही है। अपने तर्क को सीधे http अनुरोध करने के बजाय, अपना कोड एक फ़ंक्शन कॉल करें। भीतर कि समारोह की तरह कुछ हो सकता है:

if (in_test) { 
    response = get_test_response(); 
} else { 
    response = make_http_request(); 
} 

तो फिर आप अपने इकाई परीक्षण कुछ get_test_response() फ़ंक्शन द्वारा पहुँचा जा सकता मान सेट कर सकते हैं। इस तरह आप प्रोग्रामिक रूप से बदल सकते हैं कि उस कॉल का नतीजा क्या होगा।

+1

यह आमतौर पर आपके आवेदन में उस तरह के तर्क के लिए खराब रूप है। मैं एक नकली वस्तु का उपयोग करने की सिफारिश करेंगे। – codecraig

1

लाइब्रेरी को लपेटें जो इंटरफ़ेस के पीछे HTTP कॉल (उदा। Java.net.URL कनेक्शन या कॉमन्स एचटीपी क्लाइंट) बनाता है, और उसके बाद उस इंटरफ़ेस के कार्यान्वयन या मैक्स लिखें जो विफलता स्थितियों को अनुकरण करता है।

आपका इंटरफ़ेस केवल HTTP क्लाइंट कार्यक्षमता की पूरी श्रृंखला के बजाय आपके एप्लिकेशन को करने के लिए आवश्यक संचालन का प्रतिनिधित्व कर सकता है।

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