1

我正在使用com.meterware.servletunit.ServletRunner来初始化我的一个 servlet。我尝试使用下一个方法:

ServletRunner.registerServlet(String resourceName, String servletClassName)

据我了解,resourceName 是 servlet 映射,例如“/myservlet/*”左右。

但问题是这个 servlet 在 web.xml 文件中没有映射,应该在启动时初始化。我需要在我的 JUnit 中初始化这个 servlet。我怎样才能做到这一点?

4

1 回答 1

0

您可以简单地执行以下操作,它应该可以按预期工作,其中 HelloAppEngine 是我的 servlet 类

@Test
public void doGetWritesResponse() throws Exception {
    ServletRunner sr = new ServletRunner();
    sr.registerServlet("/hello", HelloAppEngine.class.getName());
    WebClient wc = sr.newClient();
    WebResponse response = wc.getResponse(http://localhost/hello");
    assertEquals("content type", "text/plain", response.getContentType());
    assertEquals("response text is ", "Hello app Engine", response.getText());
}

源代码HelloAppEngine如下

    @WebServlet(name = "HelloAppEngine", value = "/hello")
    public class HelloAppEngine extends HttpServlet {    
    @Override
     public void doGet(HttpServletRequest request, HttpServletResponse 
     response) throws IOException {
        response.setContentType("text/plain");
        response.getWriter().print("Hello app Engine");
     }
    }
于 2020-12-22T14:12:37.163 回答