Juit4整合SpringMVC,单元测试Controller

1.说明:本文采用的Springboot的开发环境。一般对Service、DAO层的Juit的测试,相对简单,仅针对controller做探讨。

2.测试@ResponseBody,针对controller只放回数据进行测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisApplicationTests {

	@Autowired
	private UserController userController;

	private MockMvc mockMvc;

	@Before
	public void setUp() {
		mockMvc = MockMvcBuilders.standaloneSetup(userController)
				.build();			
	}
	@Test
	public void Ctest() throws Exception {
		ResultActions resultActions = this.mockMvc.perform(MockMvcRequestBuilders.post("/user/all"));
		MvcResult mvcResult = resultActions.andReturn();
		//获取请求响应的数据
		String result = mvcResult.getResponse().getContentAsString();
		System.out.println(mvcResult.getResponse().getStatus());
	}
}

3.测试MVC的类型

之前参照网上的例子,进行测试,发现出现了异常,但是诡异的是在浏览器却能正常运行,在配置文件里也设置了MVC的返回的视图地址,以及View的类型

javax.servlet.ServletException: Circular view path [add]: would dispatch back to the current handler URL [/user/add] again

查找了一些资料,分析原因是缺省转发,View name与path,Spring的转发规则,自己转给自己。

解决办法1:设置InternalResourceViewResolver,消除缺省转发所带来的问题

解决办法2:将请求的Url设置和与返回的view name不同,如上的只需将/user/add 修改成/user/save 即可解决,方法二修改起来更简单,但是需要根据项目的实际情况来选择,亲测两种方式都可用。

@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisApplicationTests {

	@Autowired
	private UserController userController;

	private MockMvc mockMvc;

	@Before
	public void setUp() {

		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
		viewResolver.setPrefix("/WEB-INF/views/");
		viewResolver.setSuffix(".html");

		mockMvc = MockMvcBuilders.standaloneSetup(userController)
				.setViewResolvers(viewResolver)
				.build();
	}


	@Test
	public void Ctest() throws Exception {
		ResultActions resultActions = this.mockMvc.perform(MockMvcRequestBuilders.post("/user/all"));
		MvcResult mvcResult = resultActions.andReturn();
		ModelAndView modelandView = mvcResult.getModelAndView();
		//对比返回的视图
		ModelAndViewAssert.assertViewName(modelandView,"add");
		//打印返回的数据
		System.out.println(modelandView.getModel());

	}

}

猜你喜欢

转载自blog.csdn.net/shenbug/article/details/79502952