1

Jetty から要求しているクライアントに、http 経由でスタブ応答を送信する必要があります。Junit テストを個別に実行すると機能します。つまり、正しい XML 応答が得られますが、maven から同じことを実行すると失敗します。表示されるエラーは " java.net.SocketException: Unexpected end of file from server" です。私はすべてを試しました!助けてください!

これが私のコードです-

Junit (Junit テストとして実行すると動作します)

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);
    }

}

getWeather() 内のどこかで、URL オブジェクトを作成し、それに URL を渡し、その URLhttp://localhost:8080にリクエストを送信します。この時点で、HelloHandler のハンドル メソッドが呼び出され、このダミーの XML 応答がストリームに書き込まれ、getWeather() メソッドが応答を受信することを期待しています。

ハンドラーは次のとおりです。

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>");

    }

}

Maven から同じことを実行すると、上記のエラーがスローされます。私は何を間違っていますか?

4

1 に答える 1

3

独自の jetty ハンドラーを実装する代わりに、Jadler ( http://jadler.net ) を試すことができます。これは、私がしばらく取り組んできた http スタブ/モッキング ライブラリです。

于 2013-08-01T21:53:34.423 に答える