Jetty和JUnit-通过http发送存根响应
我需要通过http向来自Jetty的请求客户端发送存根响应。当我独立运行Junit测试时,它就工作了,这意味着,我得到了正确的XML响应。。但是当我从maven运行同样的东西时,它失败了。我看到的错误是“Jetty和JUnit-通过http发送存根响应,junit,jetty,junit4,embedded-jetty,jetty-8,Junit,Jetty,Junit4,Embedded Jetty,Jetty 8,我需要通过http向来自Jetty的请求客户端发送存根响应。当我独立运行Junit测试时,它就工作了,这意味着,我得到了正确的XML响应。。但是当我从maven运行同样的东西时,它失败了。我看到的错误是“java.net.SocketException:来自服务器的文件意外结束”。我什么都试过了!请帮忙 这是我的密码- Junit(当作为Junit测试运行时,它可以工作) 在getWeather()中的某个地方,我创建了一个URL对象并传递URLhttp://localhost:8080,然后将
java.net.SocketException:来自服务器的文件意外结束
”。我什么都试过了!请帮忙
这是我的密码-
Junit(当作为Junit测试运行时,它可以工作)
在getWeather()中的某个地方,我创建了一个URL对象并传递URLhttp://localhost:8080
,然后将请求发送到该URL。此时,我希望HelloHandler的handle方法将被调用,并将这个伪XML响应写入stream,getWeather()方法将接收响应
下面是处理程序:
公共类HelloHandler扩展了AbstractHandler{
公共无效句柄(字符串目标、请求baseRequest、,
HttpServletRequest请求,HttpServletResponse响应)
抛出IOException、ServletException{
setContentType(“application/xml;charset=utf-8”);
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println(“一个简单的响应”);
}
}
当我从maven运行相同的东西时,它抛出上面提到的错误。我做错了什么?您可以尝试Jadler(),而不是实现自己的jetty处理程序,这是一个http存根/模拟库,我已经研究了一段时间了。嗯。。我似乎自己解决了这个问题。我不知道我所做的是对还是错。。但它现在起作用了。我所做的是,我添加了如下servlet上下文:“ServletContextHandler ctx=new ServletContextHandler();”ctx.setHandler(新的HelloHandler());//设置servletcontext服务器的处理程序。setHandler(ctx);在处理程序内部,我让处理程序扩展ScopedHandler而不是AbstractHandler。处理程序将实现doScope和doHandle方法。
public class MyTest {
@Test
public void testGetOpenLots() throws Exception {
// create fixture
MyService fixture = new MyService();
// create jetty server instance
Server server = new Server(8080);
// set a handler
server.setHandler(new HelloHandler());
// set shutdown conditions
// server.setStopAtShutdown(true);
// start server
server.start();
// invoke operation
MyResponse result = fixture.getWeather(someDummyRequest);
assertNotNull(result);
}
}
public class HelloHandler extends AbstractHandler {
public void handle(String target, Request baseRequest,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("application/xml;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("<result>a simple response</result>");
}
}