1、下面对各变量/注解进行解释
@WebAppConfiguration
表明该类会使用web应用程序的默认根目录来载入ApplicationContext,默认的更目录是"src/main/webapp", 如果需要更改这个更目录可以修改该注释的value值。
@RunWith
使用 Spring-Test 框架; 在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境。
@ContextConfiguration(location = ): 指定需要加载的spring配置文件的地址
@Mock: 需要被Mock的对象
@InjectMocks: 需要将Mock对象注入的对象, 此处就是Controller
@Before: 在每次Test方法之前运行的方法,目前把登陆信息放到session中处理,以及初始化mockMvc。
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
@Test
2、具体测试的方法
测试方法中的mockMvc需要调用的方法:
1、mockMvc.perform执行一个请求(该请求由2构造);
2、MockMvcRequestBuilders.get("/user/1")构造一个请求
3、ResultActions.andExpect添加执行完成后的断言,目的测试返回结果,通过返回结果来确认测试是否成功。
4、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。
5、ResultActions.andReturn表示执行完成后返回相应的结果。
mockMvc.perform(执行一个请求)
(MockMvcRequestBuilders.get("/order/one_orders")构造一个请求
.session(session)
.contentType(MediaType.APPLICATION_XHTML_XML)
.param("page", "1")
)
.andExpect(view().name("order/one_orders/index"))//执行完后写断言
3、整个测试过程非常有规律:
1、准备测试环境
2、通过MockMvc执行请求
3.1、添加验证断言
3.2、添加结果处理器
3.3、得到MvcResult进行自定义断言/进行下一步的异步请求
4、卸载测试环境