基于Spring MVC(二)工程中的HelloController.java控制器进行JUnit测试
在HelloController.java上右击--->new--->JUnit---->JUnit Test Case,之后项目结构如下:
首先看一下HelloController.java的代码:
package com.liu.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/test")
public class HelloController {
@RequestMapping("/index.do")
public String users(HttpServletRequest request,
HttpServletResponse response) throws Exception{
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("----:"+username);
System.out.println("----:"+password);
request.setAttribute("username", username);
request.setAttribute("password", password);
return "/index";
}
}
输入主要是username和password,然后返回字符串"/index",意思就是用index.jsp进行视图渲染。由于我们对这里输入的username和password不做任何要求,只要我们输入它们,便返回"/index"
因此,JUnit测试代码HelloControllerTest.java如下:
package com.liu.controller;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
*@RunWith:使用pringJUnit4ClassRunner.class进行测试
*@ContextConfiguration:加载配置文件
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath*:/springmvc-servlet.xml","classpath*:/web.xml"})
public class HelloControllerTest {
//模拟request,response
private MockHttpServletRequest request;
private MockHttpServletResponse response;
private HelloController helloController;
/*
* 测试开始之前进行初始化
*/
@Before
public void setUp() throws Exception {
request = new MockHttpServletRequest();
request.setCharacterEncoding("UTF-8");
response = new MockHttpServletResponse();
}
@Test
public void testUser() {
request.setParameter("username", "admin");
request.setParameter("password", "123456");
try {
//判断控制器执行后是否返回字符串"/index"用于渲染
assertEquals("/index", helloController.users(request, response));
} catch (Exception e) {
e.printStackTrace();
}
}
}
然后右击HelloControllerTest.java--->Run as--->JUnit Test,运行通过: