Ton*_*ony 5 java testng unit-testing servlets mockrunner
目前我正在使用TestNG框架来测试应用程序业务逻辑,最近我添加了一些Servlet类.
如何在TestNg框架中对这些Servlet类进行单元测试?
kop*_*per 18
最简单的方法之一是来自Jetty的ServletTester.一切都在嵌入式Jetty中自动完成,因此测试期间没有打开端口!如果您使用Maven,则需要以下工件来启用此方法:
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-servlet-tester</artifactId>
<version>6.1.16</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
例:
准备ServletTester
ServletTester tester=new ServletTester();
tester.addServlet(HelloServlet.class, "/hello");
tester.start();
Run Code Online (Sandbox Code Playgroud)
创建HTTP请求
HttpTester request = new HttpTester();
request.setMethod("GET");
request.setHeader("Host","tester");
request.setURI("/hello");
request.setVersion("HTTP/1.0");
Run Code Online (Sandbox Code Playgroud)
调用servlet并检索响应:
HttpTester response = new HttpTester();
response.parse(tester.getResponses(request.generate()));
Run Code Online (Sandbox Code Playgroud)
断言您想要检查的内容及其内容:
assertEquals(200,response.getStatus());
assertEquals("Hello Servlet",response.getContent());
Run Code Online (Sandbox Code Playgroud)
我建议您将所有业务逻辑从 servlet类中移出到您可以测试的自己的类中.这使servlet成为业务逻辑和容器之间的粘合剂,其中没有任何内容值得测试.
该API类,如HttpServletRequest,ServletConfig等,是使用你所选择的嘲讽框架(JMock的,的Mockito等)的主要目标,因为他们是所有接口.
| 归档时间: |
|
| 查看次数: |
5243 次 |
| 最近记录: |