मैं एक नकली वेब सर्वर का उपयोग कर एक यूनिट परीक्षण बनाना चाहता हूं। क्या जावा में कोई वेब सर्वर लिखा गया है जिसे आसानी से शुरू किया जा सकता है और जुनीट टेस्ट केस से रोक दिया जा सकता है?जावा में यूनिट परीक्षण के लिए वेब सर्वर का नकल कैसे करें?
उत्तर
Simple (Maven) को यूनिट परीक्षण में एम्बेड करना बहुत आसान है। RoundTripTest और उदाहरण के साथ PostTest जैसे उदाहरण लें। सर्वर को आपके टेस्ट केस में एम्बेड करने का उदाहरण प्रदान करता है।
भी सरल कोई निर्भरता के साथ बहुत हल्का और घाट की तुलना में तेजी है। तो आपको अपने क्लासपाथ पर कई जार जोड़ने की ज़रूरत नहीं है। न ही आपको WEB-INF/web.xml
या किसी अन्य कलाकृतियों से चिंतित होना होगा।
हालांकि यह संभवतः उपयोगकर्ता चाहता था, यह "नकली" वेब सर्वर नहीं है, यह एक वास्तविक वेब सर्वर है जो यूनिट परीक्षण के भीतर लॉन्च किया गया है।उदाहरण के लिए, यदि बंदरगाह लिया गया तो यह असफल हो जाएगा, इसलिए एक वास्तविक नकली नहीं (यानी सिस्टम से बाहरी निर्भरता है)। मार्टिन फाउलर के नामकरण के अनुसार ["टेस्ट डबल्स"] (http://www.martinfowler.com/bliki/TestDouble.html), यह एक "नकली" है। उस ने कहा, यह ** बिल्कुल ** था जो मैं खोज रहा था। – ArtB
क्या यह परियोजना निष्क्रिय हो गई? – kbolino
Jetty web server का उपयोग करें।
आप एक mock or an embedded वेब सर्वर का उपयोग करने की कोशिश कर रहे हैं? , आप Jetty इस्तेमाल कर सकते हैं
MyServlet servlet = new MyServlet();
HttpServletRequest mockRequest = mock(HttpServletRequest.class);
HttpServletResponse mockResponse = mock(HttpServletResponse.class);
StringWriter out = new StringWriter();
PrintWriter printOut = new PrintWriter(out);
when(mockResponse.getWriter()).thenReturn(printOut);
servlet.doGet(mockRequest, mockResponse);
verify(mockResponse).setStatus(200);
assertEquals("my content", out.toString());
एक एम्बेडेड वेब सर्वर के लिए,:
एक नकली वेब सर्वर के लिए, Mockito, या कुछ इसी तरह का उपयोग करके देखें, और सिर्फ HttpServletRequest
और HttpServletResponse
वस्तुओं की तरह नकली जो आप use in tests कर सकते हैं।
पर एक नज़र एक और अच्छा विकल्प MockServer होगा है; यह एक धाराप्रवाह इंटरफ़ेस प्रदान करता है जिसके साथ आप मजाक किए गए वेब सर्वर के व्यवहार को परिभाषित कर सकते हैं।
इसके अलावा मॉकसेवर नेटी (जेटी नहीं) पर निर्भर करता है। –
Wire Mock स्टब्स का एक ठोस सेट की पेशकश करने लगता है और बाहरी वेब सेवाओं के परीक्षण के लिए मजाक उड़ाता है।
@Rule
public WireMockRule wireMockRule = new WireMockRule(8089);
@Test
public void exactUrlOnly() {
stubFor(get(urlEqualTo("/some/thing"))
.willReturn(aResponse()
.withHeader("Content-Type", "text/plain")
.withBody("Hello world!")));
assertThat(testClient.get("/some/thing").statusCode(), is(200));
assertThat(testClient.get("/some/thing/else").statusCode(), is(404));
}
यह भी स्पॉक के साथ एकीकृत कर सकता है। उदाहरण here मिला।
यह मेरे लिए बहुत अच्छा काम करता है। WireMockConfig() का उपयोग करना। डायनामिकपोर्ट() इसे एक सेटिंग में अधिक अनुमानित बनाता है जहां अन्य प्रोग्राम पोर्ट का उपयोग कर सकते हैं। काश यह डिफ़ॉल्ट था क्योंकि मैं लगभग इस संभावना को याद करता था और इस महान पुस्तकालय को छोड़ देता था। – morten
आपके द्वारा प्रदान किए गए कोड में testClient क्या है? – gribo
@gribo मुझे लगता है कि testClient परीक्षण के तहत आपका वास्तविक उदाहरण है। – Stephan
आप जाडलर (http://jadler.net) को आजमा सकते हैं, जो आपके परीक्षणों में http संसाधनों को स्टब और नकल करने के लिए एक धाराप्रवाह प्रोग्रामैटिक जावा एपीआई वाली लाइब्रेरी है। उदाहरण:
onRequest()
.havingMethodEqualTo("GET")
.havingPathEqualTo("/accounts/1")
.havingBody(isEmptyOrNullString())
.havingHeaderEqualTo("Accept", "application/json")
.respond()
.withDelay(2, SECONDS)
.withStatus(200)
.withBody("{\\"account\\":{\\"id\\" : 1}}")
.withEncoding(Charset.forName("UTF-8"))
.withContentType("application/json; charset=UTF-8");
मैंने जैडलर का उपयोग करने की कोशिश की लेकिन जब भी मैं 'initJadler()' को कॉल करने का प्रयास कर रहा हूं, मुझे त्रुटि मिली है जैसा कि https://github.com/jadler-mocking/jadler/issues/107 बताया गया है। कोई विचार क्या गलत हो सकता है? – tuk
क्या आप कृपया एमवीएन निर्भरता का परिणाम पेस्ट कर सकते हैं: यहां पेड़? यह पुस्तकालयों का संघर्ष हो सकता है। –
कृपया मेरा जवाब github.com/jadler-mocking/jadler/issues/107 में पढ़ें, समस्या जेटी संस्करणों (8 बनाम 9) के संघर्ष के कारण होती है। आप जेटी 9 निर्भरता को हटा सकते हैं (यदि परीक्षण चलाने के लिए इसकी आवश्यकता नहीं है) या जेटी निर्भरता के बिना जेडलर चलाएं (https://github.com/jadler-mocking/jadler/wiki/Using-the- वैकल्पिक-Stub- सर्वर - कार्यान्वयन) –
साथ ही आप JDK के HttpServer
वर्ग के साथ एक नकली लिख सकते हैं (कोई बाहरी निर्भरता) की आवश्यकता। this blog post देखें कि कैसे।
सारांश में:
HttpServer httpServer = HttpServer.create(new InetSocketAddress(8000), 0);
httpServer.createContext("/api/endpoint", new HttpHandler() {
public void handle(HttpExchange exchange) throws IOException {
byte[] response = "{\"success\": true}".getBytes();
exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.length);
exchange.getResponseBody().write(response);
exchange.close();
}
});
httpServer.start();
try {
// Do your work...
} finally {
httpServer.stop(0);
}
क्या यह कहने का कोई तरीका है कि 'HttpServer' को कोई अनुरोध प्राप्त हुआ है या नहीं? –
आप Apache httpclient का उपयोग कर रहे हैं, तो यह एक अच्छा विकल्प हो जाएगा। HttpClientMock
HttpClientMock httpClientMock = new httpClientMock()
HttpClientMock("http://example.com:8080");
httpClientMock.onGet("/login?user=john").doReturnJSON("{permission:1}");
पूर्ण प्रकटीकरण: मैं पुस्तकालय के लेखक हूँ।
- 1. जावा में एसओएपी वेब सेवाओं का नकल कैसे करें
- 2. यूनिट परीक्षणों में डेटटाइम.अब कैसे नकल करें?
- 3. नोएसक्यूएल - इकाई परीक्षण के लिए डेटाबेस कैसे नकल करें?
- 4. हास्केल में परीक्षण के लिए कैसे नकल करें?
- 5. जेएसओएन प्रतिक्रिया सर्वर/यूनिट परीक्षण कैसे करें?
- 6. यूनिट परीक्षण सलाह - यूनिट का परीक्षण कैसे करें .asmx
- 7. यूनिट परीक्षण के लिए ब्राउज़र में फ़ाइल पिकर का नकल कैसे करते हैं?
- 8. मैं RequJS में यूनिट परीक्षण के लिए निर्भरता का नकल कैसे कर सकता हूं?
- 9. यूनिट परीक्षण के लिए क्लोजर का उपयोग जावा
- 10. यूनिट परीक्षण जावा सर्वलेट
- 11. यूनिट परीक्षण जावा में स्कैला का उपयोग करें?
- 12. ब्राउज़र के टाइमज़ोन का नकल कैसे करें?
- 13. जावा, जुनीट - यूनिट परीक्षण
- 14. यूनिट परीक्षण वेब सेवाएं - HttpContext
- 15. वेब अनुप्रयोग का परीक्षण कैसे करें?
- 16. जावा कार्ड यूनिट परीक्षण
- 17. यूनिट परीक्षण वेब सेवाओं के लिए अनुशंसित पैटर्न
- 18. httpcontext का नकल कैसे करें ताकि यह यूनिट परीक्षण से शून्य न हो?
- 19. जावा एनोटेशन प्रोसेसर के लिए स्वचालित यूनिट परीक्षण कैसे लिखें?
- 20. जावा वेब सेवा का नकल करने का सबसे अच्छा तरीका
- 21. EntityManager का नकल कैसे करें?
- 22. यूनिट परीक्षण एनएससीओडी कैसे करें?
- 23. नेस्टेड नियंत्रकों के लिए यूनिट परीक्षण
- 24. यूनिट परीक्षण
- 25. यूनिट परीक्षण आईडीस्पोज़ेबल कैसे करें?
- 26. जावा में यूनिट परीक्षण - यह क्या है?
- 27. जावा स्विंग में प्रिंटिंग के लिए यूनिट परीक्षण
- 28. ember.js में यूनिट परीक्षण दृश्य कैसे करें?
- 29. जावा यूनिट परीक्षण, निर्देशिका लेआउट
- 30. Django में विभिन्न सेटिंग्स के साथ यूनिट परीक्षण कैसे करें?
कार्य एक इकाई परीक्षण नहीं, एकीकरण परीक्षण बनाने की तरह दिखता है। –