单元测试带有嵌入式Jetty的servlet

blu*_*123 12 unit-testing servlets jetty

我们如何使用嵌入式Jetty服务器对servlet进行单元测试?

例如,如何测试下面的servlet方法?

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    //any logic inside
}
Run Code Online (Sandbox Code Playgroud)

jes*_*ell 16

我非常喜欢使用类似junit的东西来测试带有嵌入式jetty实例的servlet来引导它.

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/MinimalServlets.java

这是如何做到这一点的最小例子.

这也是我们如何测试绝大多数码头本身,启动并运行它的步伐.

对于特定的servlet或处理程序,我们经常在jetty-test-helper工件中使用jetty-client或SimpleRequest.URLConnection也可以.

http://git.eclipse.org/c/jetty/org.eclipse.jetty.toolchain.git/tree/jetty-test-helper/src/main/java/org/eclipse/jetty/toolchain/test/SimpleRequest. java的

这是jetty-client中的一个测试,它适用于jetty-9,所以如果你想要7或8然后查看相应的标签,它在jetty-9中被重构了很多.

http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/jetty-client/src/test/java/org/eclipse/jetty/client/HttpClientTest.java

注意:我建议您将0作为jetty的端口启动,这将为您提供一个随机打开的端口,然后您可以从jetty中取出用于测试目的,这可以避免在CI或并行上运行多个构建的情况构建可能存在端口冲突的地方.