통합 JUnit 테스트를 작성하고 있습니다. 내 임무는 내 로컬 서버의 응답이 정확한지 테스트하는 것입니다. 언급 된 서버는 분석 할 페이지의 주소를 GET 매개 변수로 취합니다 (예 : localhost:8000/test?url=http://www.example.com
).테스트 목적으로 새로 생성 된 부두 서버에 요청을 보냅니다.
www.example.com에 의존하지 않으려 고 항상 동일한 컨텐츠를 제공하는 내 고유의 부두 (jetty) 서버에 대해이 특정 테스트를 시작하겠습니다.
private static class MockPageHandler extends AbstractHandler {
public void handle(String target,Request baseRequest, HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html; charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
final String responseString = loadResource("index.html");
response.getWriter().write(responseString);
baseRequest.setHandled(true);
}
}
public void test() throws Exception {
final int PORT = 8080;
final Server server = new Server(PORT);
server.setHandler(new MockPageHandler());
server.start();
final ContentResponse response =
client.newRequest("http://localhost:8000/test?url=http://localhost:8080").send();
/* some assertions. */
server.stop();
server.join();
}
나는이 테스트를 실행할 때마다, MockPageHandler
의 handle
방법은 호출되지 않습니다. 이것이 작동하지 않는 이유가 있습니까?
P. server.stop()
을 제거하고 브라우저 유형이 http://localhost:8080
이면 적절한 페이지가 표시됩니다.
당신이 제안한대로 server.join()을 제거하면 마술처럼 작동합니다! – amazia