编写Spring MVC的单元测试可以按照以下步骤进行:
导入相关的依赖:在项目的pom.xml
文件中添加spring-test
和junit
依赖。
创建测试类:在测试目录下创建一个测试类,命名方式为{ControllerName}Test
,例如UserControllerTest
。
添加注解:在测试类上使用@RunWith(SpringRunner.class)
注解,告诉JUnit运行器使用Spring的上下文来运行测试。
注入依赖:使用@Autowired
注解注入需要进行测试的Controller。
编写测试方法:使用@Test
注解标记要进行测试的方法,并编写测试代码。可以模拟请求和验证返回结果。
以下是一个简单示例:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserControllerTest {
@Autowired
private UserController userController;
@Test
public void testGetUser() {
// 模拟请求
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setMethod("GET");
request.setRequestURI("/user/1");
// 执行方法
ModelAndView mav = userController.getUser(1);
// 验证返回结果
assertEquals("user", mav.getViewName());
User user = (User) mav.getModel().get("user");
assertEquals(1, user.getId());
}
@Test
public void testAddUser() {
// 模拟请求
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
request.setMethod("POST");
request.setRequestURI("/user");
request.setParameter("name", "John");
// 执行方法
ModelAndView mav = userController.addUser(request);
// 验证返回结果
assertEquals("success", mav.getViewName());
}
}
在这个示例中,我们分别测试了getUser
和addUser
方法。首先,我们使用MockHttpServletRequest
和MockHttpServletResponse
来模拟请求和响应。然后,我们执行方法并验证返回结果。