Servlet测试

Scr*_*ers 3 java testing servlets jetty

我正在使用Jetty提供的ServletTester类来测试我的一个servlet.

servlet使用InputStream.read()读取请求的主体,以构造一个byte [],它由servlet解码并执行.

ServletTest类提供了getResponses(ByteArrayBuffer)方法,但我不确定如何以正确的格式创建其中一个,因为它还需要包含诸如头之类的东西(例如"Content-Type:application/octet-stream").

任何人都可以向我展示一种简单的方法来构建它,最好使用现有的库,以便我可以以类似于HttpTester类的方式使用它.

如果有一种"更好"的方法来测试servlet(理想情况下使用本地连接器而不是通过tcp堆栈),我也想听一听.

非常感谢,

tim*_*tea 5

为什么要使用模拟?为什么不通过在jetty中运行它来测试servlet?

Servlet servlet = new MyServlet();
String mapping = "/foo";

    Server server = new Server(0);
    Context servletContext = new Context(server, contextPath, Context.SESSIONS);
    servletContext.addServlet(new ServletHolder(servlet), mapping);
    server.start();

    URL url = new URL("http", "localhost", server.getConnectors()[0].getLocalPort(), "/foo?bar");

    //get the url...assert what you want

    //finally server.stop();
Run Code Online (Sandbox Code Playgroud)

编辑:只是想让人们放心,这是非常快的.它也是一个非常可靠的指标,表明你的代码实际上会做什么,因为它实际上是在做它.