Jetty和JUnit-通过http发送存根响应

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,然后将

我需要通过http向来自Jetty的请求客户端发送存根响应。当我独立运行Junit测试时,它就工作了,这意味着,我得到了正确的XML响应。。但是当我从maven运行同样的东西时,它失败了。我看到的错误是“
java.net.SocketException:来自服务器的文件意外结束
”。我什么都试过了!请帮忙

这是我的密码-

Junit(当作为Junit测试运行时,它可以工作) 在getWeather()中的某个地方,我创建了一个URL对象并传递URL
http://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>");

    }

}