Mockito测试返回NullInsteadOfMockException



我正试图测试servlet的登录页面,但Mock测试抛出了一个异常

登录服务器

/**
 * @see HttpServlet#HttpServlet()
 */
public LoginServlet() {
    super();
    // TODO Auto-generated constructor stub
}
/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // TODO Auto-generated method stub
    HttpSession session = request.getSession(true);
    boolean result = false;
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    result = obj.validateLogin(username, password);
    if (result) {
        session.setAttribute("username", username);
        response.sendRedirect("UserHome.jsp");
    } else {
        response.sendRedirect("login.jsp");
    }
    return;
}
/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
}
}

MockTest:这是我为登录编写的测试用例

public class LoginServletMockTest {
@Test
public void testServlet() throws Exception {
    HttpServletRequest request = mock(HttpServletRequest.class);
    HttpServletResponse response = mock(HttpServletResponse.class);
    HttpSession session = request.getSession(true);
    when(request.getParameter("username")).thenReturn("garwitauday");
    when(request.getParameter("password")).thenReturn("123");
    when(request.getSession()).thenReturn(session);
    doNothing().when(session).setAttribute("username", "garwitauday");
    doNothing().when(response).sendRedirect("Userhome.jsp");
    LoginServlet loginservlet = new LoginServlet();
    loginservlet.doPost(request, response);
    verify(session).setAttribute("username", "garwitauday");
    verify(response).sendRedirect("Userhome.jsp");
}
}

我无法解决此问题

还为HttpSession创建mockito对象,并在请求中设置mockito会话对象。

然后继续执行相同的do(..).when(..)或when(..).thenReturn(..)来模拟调用。

确保在请求和会话对象中设置属性和参数,以便于测试。

如果您的是基于mvc的servlet,那么最好使用MockMvc及其构建器对象。

相关内容

  • 没有找到相关文章

最新更新