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 TestNg framework?
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:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-servlet-tester</artifactId>
<version>6.1.16</version>
<scope>test</scope>
</dependency>
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());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With