我有一堆在Tomcat servlet容器下运行的servlet.我想将测试代码与生产代码分开,所以我考虑使用测试框架.JUnit很好地集成到Eclipse中,但我没能使用正在运行的Tomcat服务器运行servlet.您能否推荐一个支持测试Tomcat servlet的单元测试框架?Eclipse集成很好但不是必需的.
查看ServletUnit,它是HttpUnit的一部分.简而言之,ServletUnit提供了一个模拟库和实用程序库,您可以在普通的JUnit测试中使用它来模拟servlet容器和其他与servlet相关的对象,如请求和响应对象.上面的链接包含示例.
Spring Framework为Servlet API中的几个类提供了很好的现成模拟对象:
http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/mock/web/package-summary.html
好的.忽略'tomcat'位并编码到servlet,最好的办法是为响应创建模拟并请求对象,然后告诉它你对它的期望.
所以对于一个标准的空doPost,并使用EasyMock,你将拥有
public void testPost() { mockRequest = createMock(HttpServletRequest.class); mockResponse = createMock(HttpServletResponse.class); replay(mockRequest, mockResponse); myServlet.doPost(mockRequest, mockResponse); verify(mockRequest, mockResponse); }
然后开始向doPost添加代码.模拟会失败,因为他们没有期望,然后你可以从那里设定期望.
请注意,如果要将EasyMock与类一起使用,则必须使用EasyMock类扩展库.但从那时起它将以同样的方式运作.