使用虚拟MVC请求进行单元测试Controller层方法

本小妞迷上赌 提交于 2020-03-03 11:54:53

应用场景:表现层代码在测试时,需要部署服务器,启动服务器测试,对于频繁的测试,由于服务器启动缓慢,测试起来很不方便。
spring-test提供了虚拟mvc请求,可以模拟请求进行测试

需要jar包:spring-test.jar

@ContextConfiguration(locations = {"classpath:applicationContext.xml","classpath:springmvc.xml"})
@WebAppConfiguration//此注解为WebApplicationContext从springmvc IOC中取出赋值
@RunWith(SpringJUnit4ClassRunner.class)
public class UserMVCTest {
    @Autowired
    private WebApplicationContext context;
    //虚拟mvc请求
    private MockMvc mockMvc;
    //初始化mockMvc
    @Before
    public void initMockMvc(){
        mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
    }
    @Test
    public void testVerifyUserName() throws Exception {
        //发送请求,并获取返回值(会执行action方法中的代码,包括输出语句)
        mockMvc.perform(MockMvcRequestBuilders.get("/user/verifyUserName")
                .param("userName", "wang5"));
    }
    @Test
    public void testLogin() throws Exception{
        MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/user/login")
                .param("userName", "zhang3").param("password", "1234")).andReturn();
        User user = (User) result.getRequest().getSession().getAttribute("user");
        System.out.println(user);
    }
    @Test
    public void testRegister() throws Exception{
        mockMvc.perform(MockMvcRequestBuilders.get("/user/register")
                .param("userName", "wang5").param("password", "1234"));
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!