junit 测试 servlet easymock方式

junit 4,easymock 3
1、测试代码

import static org.junit.Assert.assertEquals;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;

public class SampleServletTest {
private SampleServlet servlet;

private HttpServletRequest mockRequest;

private HttpServletResponse mockRespones;

private ServletContext mockServletContext;

private RequestDispatcher mockDispathcher;

@Before
public void setUp() throws Exception {
mockRequest = EasyMock.createMock(HttpServletRequest.class);
mockRespones = EasyMock.createMock(HttpServletResponse.class);
mockServletContext = EasyMock.createMock(ServletContext.class);
mockDispathcher = EasyMock.createMock(RequestDispatcher.class);

servlet = new SampleServlet() {

private static final long serialVersionUID = 1L;

public ServletContext getServletContext() {
return mockServletContext;
}
};

}


@Test
public void testDoGetHttpServletRequestHttpServletResponse() throws ServletException, IOException {
EasyMock.expect(mockRequest.getParameter("username")).andReturn("test").times(1);
EasyMock.expect(mockRequest.getParameter("password")).andReturn("123456").times(1);
EasyMock.expect(mockServletContext.getRequestDispatcher("dispather")).andReturn(mockDispathcher).times(1);
mockDispathcher.forward(mockRequest, mockRespones);
EasyMock.expectLastCall();
EasyMock.replay(mockRequest, mockServletContext, mockDispathcher);
servlet.doGet(mockRequest, mockRespones);
EasyMock.verify(mockDispathcher);
}

@Test
public void testDoGetFailed() throws ServletException, IOException {
EasyMock.expect(mockRequest.getParameter("username")).andReturn("test").times(1);
EasyMock.expect(mockRequest.getParameter("password")).andReturn("123458").times(1);
EasyMock.replay(mockRequest);
try {
servlet.doGet(mockRequest, mockRespones);
} catch (Exception e) {
assertEquals("Login error", e.getMessage());
}
EasyMock.verify(mockRequest);

}

}



2、实现代码

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SampleServlet extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if ("test".equals(username) && "123456".equals(password)) {
ServletContext context = getServletContext();
RequestDispatcher dispatcher = context
.getRequestDispatcher("dispather");
dispatcher.forward(request, response);
} else {
throw new RuntimeException("Login error");
}

}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Junit单元测试是一种用于测试Java代码的框架,可以对代码进行自动化的单元测试Servlet是Java Web应用程序中的一个基础组件,用于处理用户请求和生成响应。 在编写Junit单元测试Servlet案例时,我们需要按照以下步骤进行: 1. 导入必要的依赖库:包括Junit框架以及Servlet相关的库。 2. 创建一个测试类:在该类中,我们需要创建一个Servlet实例,用于测试。 3. 编写测试方法:在测试方法中,我们可以通过模拟用户请求和验证Servlet的响应来测试代码的逻辑和正确性。这包括设置请求的参数、调用Servlet的service()方法,并通过断言来验证结果是否符合预期。 4. 运行测试:通过运行测试类,我们可以执行所有的测试方法,并获取测试结果。Junit会自动记录通过和失败的测试用例。 5. 分析测试结果:根据测试结果,我们可以检查代码逻辑是否正确,以及是否满足预期要求。如果有失败的测试用例,我们可以通过查看日志和调试代码来找出问题。 总结来说,Junit单元测试可以帮助我们验证Servlet的功能和正确性,减少潜在的错误和问题。通过编写完善的单元测试,我们可以在开发和维护过程中更加自信地进行代码重构和修改。 ### 回答2: JUnit单元测试是一种常用的软件测试方法,用于验证代码的各个部分是否正常工作。在Servlet案例中,JUnit单元测试可用于验证Servlet的各个方法是否按照预期进行处理。 对于Servlet案例,可以创建一个针对Servlet类的测试类。在测试类中,可以使用JUnit的`@Test`注解来标记各个测试方法。例如,可以编写以下代码: ```java import org.junit.Test; import org.junit.Assert; import org.mockito.Mockito; public class ServletTest { @Test public void testDoGet() throws IOException, ServletException { HttpServletRequest request = Mockito.mock(HttpServletRequest.class); HttpServletResponse response = Mockito.mock(HttpServletResponse.class); Servlet servlet = new Servlet(); // 模拟请求参数 Mockito.when(request.getParameter("name")).thenReturn("John"); // 调用Servlet的doGet方法 servlet.doGet(request, response); // 验证响应是否符合预期 Mockito.verify(response).setContentType("text/plain"); Mockito.verify(response).getWriter().write("Hello, John!"); } @Test public void testDoPost() throws IOException, ServletException { HttpServletRequest request = Mockito.mock(HttpServletRequest.class); HttpServletResponse response = Mockito.mock(HttpServletResponse.class); Servlet servlet = new Servlet(); // 模拟请求参数 Mockito.when(request.getParameter("age")).thenReturn("25"); // 调用Servlet的doPost方法 servlet.doPost(request, response); // 验证响应是否符合预期 Mockito.verify(response).setContentType("text/plain"); Mockito.verify(response).getWriter().write("Your age is 25."); } } ``` 在上述代码中,我们创建了`HttpServletRequest`和`HttpServletResponse`的模拟对象,并使用`Mockito`框架模拟了这两个对象的行为。然后,我们创建了一个要测试的`Servlet`对象,并调用其`doGet`和`doPost`方法。 在`doGet`和`doPost`方法的测试中,我们使用`Mockito.when`方法来模拟请求参数的值,并使用`Mockito.verify`方法来验证响应是否符合预期。 通过编写这些JUnit单元测试,我们可以确保Servlet的各个方法在各种情况下都能正常工作,并且能够正确地处理请求和生成响应。这样可以提高代码的可靠性和质量,减少代码改动时引入的潜在问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值