2013-01-06 13 views
11

के साथ एक सर्वलेट परीक्षण करता है हम एक एम्बेडेड जेटी सर्वर के साथ एक सर्वलेट का परीक्षण कैसे कर सकते हैं?यूनिट एक एम्बेडेड जेटी

उदाहरण के लिए, नीचे सर्वलेट विधि का परीक्षण कैसे करें?

protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    //any logic inside 
} 

उत्तर

14

मैं जेटीट के एम्बेडेड इंस्टेंस के साथ परीक्षण सर्लेट को बहुत पसंद करता हूं जैसे जुनेट को बूटस्ट्रैप करने के लिए।

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/MinimalServlets.java

इसे कैसे करना के न्यूनतम उदाहरण है।

यह भी है कि हम जेटी के विशाल बहुमत का परीक्षण कैसे करते हैं, इसे शुरू करते हैं और इसे अपने पैसों के माध्यम से चलाते हैं।

एक विशिष्ट सर्वलेट या हैंडलर के लिए हम अक्सर जेटी-क्लाइंट या सरल जेटवेस्ट का उपयोग जेटी-टेस्ट-हेल्पर आर्टिफैक्ट में करते हैं। एक यूआरएल कनेक्शन भी काम करता है।

http://git.eclipse.org/c/jetty/org.eclipse.jetty.toolchain.git/tree/jetty-test-helper/src/main/java/org/eclipse/jetty/toolchain/test/SimpleRequest.java

यहाँ घाट-ग्राहक में एक परीक्षण है, यह घाट-9 के लिए है, इसलिए यदि आप चाहते हैं 7 या 8 तो इसी टैग के तहत देखो, यह घाट-9 में काफ़ी पुनर्संशोधित किया गया।

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java

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

+1

यह बहुत उपयोगी है। लेकिन आपके उदाहरण में, यह वास्तव में यह नहीं दिखाता है कि हम servlet को अनुरोध करके HelloServlet (या कुछ और जटिल) का परीक्षण कैसे करते हैं। क्या आप कुछ और जानकारी प्रदान करेंगे? – blue123

0

आप जेट्टी सर्वलेट का परीक्षण करने की जरूरत नहीं है, आप इस तरह JUnit, Mockito, JMock, आदि के रूप में एक इकाई परीक्षण ढांचे की जरूरत है,

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

एकीकरण परीक्षण और प्रणाली परीक्षण पर जा सकते हैं, और वह हिस्सा इस तरह के घाट के रूप में बाहरी सिस्टम शामिल कर सकते हैं (Selenium के रूप में स्वचालन चौखटे ऐसे इस्तेमाल करते हैं।) मैं Mockito और PowerMock का उपयोग करने के लिए मेरा यूनिट परीक्षण, आप वास्तविक ऑनलाइन सेवा के एक उदाहरण उदाहरण के लिए this code देख सकते हैं (जिसे आप here पा सकते हैं)। मैंने इस सेवा के बारे में एक ट्यूटोरियल लिखा और इसमें क्या शामिल है, यह here पाया जा सकता है।

[इस उत्तर पर समय-समय पर डाउनवॉव प्राप्त करने के बाद जोड़ा गया]: और अधिक डाउनवॉट प्राप्त करने के जोखिम पर, आप सभी बटन को -1 बटन पर क्लिक करने से पहले यूनिट परीक्षण की परिभाषा को पढ़ने की आवश्यकता है। आप बस इतना नहीं जानते कि आप किस बारे में बात कर रहे हैं।

+0

आपके उत्तर के लिए बहुत बहुत धन्यवाद। लेकिन क्या होगा यदि मैं जेटी की मदद से इकाई परीक्षण को एकीकरण परीक्षण की तरह बनाना चाहता हूं? मैं फिर परीक्षण कैसे कर सकता हूं? – blue123

+7

उपर्युक्त उत्तर से असहमत है, यह जांचने के लिए बेहतर है कि जेईई कंटेनर में बैठे समय आपका सर्वलेट कैसे व्यवहार करता है, इस तरह यह वास्तविक जीवन में चलता है। जानना बेहतर है कि आपका कोड वास्तविक जीवन में एक मॉक अप ऑब्जेक्ट की तुलना में कैसे काम करेगा। – Jacob

+4

मैं इस उत्तर का समर्थन करता हूं, सवाल विशेष रूप से 'यूनिट-टेस्ट' का उल्लेख करता है। यदि ओपी एकीकरण परीक्षण चलाने के लिए चाहता है, तो शीर्षक गलत है। – maksimov

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