目前我使用TestNG框架进行测试的应用程序的业务逻辑,我增加了一些Servlet类。

我怎么单元的测试这些Servlet类TestNg框架?

有帮助吗?

解决方案

按照skaffman的建议,如果可能的。如果没有,或者如果你想测试的行为servlet作为前端控制器,而不是业务逻辑,在他们里面,你可以使用:

其他提示

其中一种最简单的方法之一是 ServletTester 从码头。一切都被嵌入码头内自动完成的,所以没有在测试过程中打开的端口!如果使用Maven比以下伪影是为了使此方法:

<dependency>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>jetty-servlet-tester</artifactId>
  <version>6.1.16</version>
  <scope>test</scope>
</dependency>

示例:

准备ServletTester

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

创建HTTP请求

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

呼叫servlet和检索响应:

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

断言要检查响应,它的内容是什么:

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

我建议你把所有的业务逻辑的出的的的servlet类的,到自己的类,你可以测试一下。这树叶的servlet,就像你的业务逻辑和容器之间的胶水,什么也没有在他们的价值的测试。

在API类如HttpServletRequestServletConfig等,是使用你所选择的嘲讽框架(JMock的,的Mockito等)的主要目标,因为他们的所有接口。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top