Servlet unit test

前端 未结 3 382
鱼传尺愫
鱼传尺愫 2021-01-06 01:16

Currently I\'m using TestNG framework for testing application business logic, i added some Servlet classes recently.

How do I unit test these Servlet classes in Test

3条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-06 01:56

    One of the easiest ways is ServletTester from Jetty. Everything is done within embedded Jetty automatically, so there is no port opened during the testing! If you use Maven than the following artifact is required to enable this method:

    
      org.mortbay.jetty
      jetty-servlet-tester
      6.1.16
      test
    
    

    Example:

    Prepare ServletTester

    ServletTester tester=new ServletTester(); 
    tester.addServlet(HelloServlet.class, "/hello"); 
    tester.start();
    

    Create HTTP request

    HttpTester request = new HttpTester(); 
    request.setMethod("GET");
    request.setHeader("Host","tester"); 
    request.setURI("/hello");
    request.setVersion("HTTP/1.0");
    

    Call servlet and retrieve response:

    HttpTester response = new HttpTester();
    response.parse(tester.getResponses(request.generate()));
    

    Assert what you want to check on response and it's content:

    assertEquals(200,response.getStatus()); 
    assertEquals("Hello Servlet",response.getContent());
    

提交回复
热议问题