मैं अपने प्रोग्राम के विभिन्न रन-थ्रू के परीक्षणों को अनुकरण करने की कोशिश कर रहा हूं, @Before
विधि में जेटी सर्वर स्थापित करना और @After
में इसे बंद करना।जुनीट परीक्षणों के बीच जेटी सर्वर को शुरू करना और रोकना
मेरा पहला परीक्षण सफलतापूर्वक चलाया जाएगा, लेकिन निम्नलिखित परीक्षणों में POST डेटा का प्रयास करने पर com.sun.jersey.api.client.ClientHandlerException: java.net.SocketException: Software caused connection abort: recv failed
होता है। परीक्षण के बीच साफ-सफाई बंद करने के लिए क्या कोई तरीका है कि मैं अपना सर्वर (और क्लाइंट?) प्राप्त कर सकता हूं?
मेरे पहले और कोड के बाद इस प्रकार है:
@Before
public void startServer() {
try {
server = new Server(8080);
ServletContextHandler root = new ServletContextHandler(server, "/ingest", ServletContextHandler.SESSIONS);
root.addServlet(new Servlet(), "/*");
server.start();
client = new Client();
client.setChunkedEncodingSize(16 * 1024);
FileInputStream stream = new FileInputStream(testFile);
try {
client.resource(uri).type(MediaType.APPLICATION_OCTET_STREAM).post(stream);
} catch (Exception e) {
e.printStackTrace();
} finally {
Closeables.closeQuietly(stream);
client.destroy();
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected Exception when starting up server.");
}
}
@After
public void shutDown() {
if (output.exists()) {
output.delete();
}
try {
server.stop();
} catch (Exception e) {
e.printStackTrace();
}
}
बहुत बढ़िया, यह मेरे लिए काम करता है! – hsestupin
जेटी 6 के लिए मुझे SelectChannelConnector का उपयोग करना पड़ा (सर्वर कनेक्टर मौजूद नहीं है)। – Dennie