对于要在项目里对servlet进行单元测试,可以使用junit进行,而用junit测试servlet时有两种方法,一种使用httpunit + servlet测试,另一种是easymock + servlet,在这里重点介绍使用easymock方法进行的junit测试。
环境:eclipse 3.7 , junit 4 , easymock 3.1。
测试单元代码如下 :
- import static org.junit.Assert.fail;
- import static org.easymock.EasyMock.*;
- import java.io.IOException;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.xml.ws.Action;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- import com.joyveb.award.web.AwardResultServlet;
- public class ResultServletTest {
- private AwardResultServlet servlet;
- private HttpServletRequest mockRequest;
- private HttpServletResponse mockResponse;
- @Before
- public void setUp(){
- servlet = new ResultServlet();
- mockRequest = createMock(HttpServletRequest.class); //加载
- mockResponse = createMock(HttpServletResponse.class);
- }
- @After
- public void tearDown(){
- verify(mockRequest); //验证
- verify(mockResponse);
- }
- @Test
- public void testDoPostHttpServletRequestHttpServletResponse() throws ServletException, IOException {
- mockRequest.getParameter("id"); //传入参数
- expectLastCall().andReturn("1");
- mockRequest.getParameter("name"); //传入参数
- expectLastCall().andReturn("chevy");
- mockRequest.getParameter("gender"); //传入参数
- expectLastCall().andReturn("男");
- replay(mockRequest); //回放
- replay(mockResponse);
- servlet.doPost(mockRequest, mockResponse); //调用
- }
- }
servlet类就可以根据上面定义的类名,简单写个doPost方法就可以进行junit测试了。