springmvc项目进行junit测试方法
spring mvc 项目进行junit测试 ,如果需要找一个完整的例子查看请找spring-mvc-showcase项目里面包括springmvc使用 以及junit test 测试
spring mvc测试框架提供了两种方式,独立安装和集成Web环境测试(此种方式并不会集成真正的web环境,而是通过相应的Mock API进行模拟测试,无须启动服务器)。
独立测试方式
public class UserControllerStandaloneSetupTest { private MockMvc mockMvc; @Before public void setUp() { UserController userController = new UserController(); mockMvc = MockMvcBuilders.standaloneSetup(userController).build(); } }
1、首先自己创建相应的控制器,注入相应的依赖
2、通过MockMvcBuilders.standaloneSetup模拟一个Mvc测试环境,通过build得到一个MockMvc
3、MockMvc:是我们以后测试时经常使用的API,后边介绍
集成Web环境方式
//XML风格 @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration(value = "src/main/webapp") @ContextHierarchy({ @ContextConfiguration(name = "parent", locations = "classpath:spring-config.xml"), @ContextConfiguration(name = "child", locations = "classpath:spring-mvc.xml") }) //注解风格 //@RunWith(SpringJUnit4ClassRunner.class) //@WebAppConfiguration(value = "src/main/webapp") //@ContextHierarchy({ // @ContextConfiguration(name = "parent", classes = AppConfig.class), // @ContextConfiguration(name = "child", classes = MvcConfig.class) //}) public class UserControllerWebAppContextSetupTest { @Autowired private WebApplicationContext wac; private MockMvc mockMvc; @Before public void setUp() { mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); } }
1、@WebAppConfiguration:测试环境使用,用来表示测试环境使用的ApplicationContext将是WebApplicationContext类型的;value指定web应用的根;
2、@ContextHierarchy:指定容器层次,即spring-config.xml是父容器,而spring-mvc.xml是子容器
3、通过@Autowired WebApplicationContext wac:注入web环境的ApplicationContext容器;
4、然后通过MockMvcBuilders.webAppContextSetup(wac).build()创建一个MockMvc进行测试;
到此测试环境就搭建完成了,根据需要选择使用哪种方式即可。相关配置请前往github查看。
HelloWorld
@Test public void testView() throws Exception { MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/user/1")) .andExpect(MockMvcResultMatchers.view().name("user/view")) .andExpect(MockMvcResultMatchers.model().attributeExists("user")) .andDo(MockMvcResultHandlers.print()) .andReturn(); Assert.assertNotNull(result.getModelAndView().getModel().get("user")); }
1、mockMvc.perform执行一个请求;
2、MockMvcRequestBuilders.get("/user/1")构造一个请求
3、ResultActions.andExpect添加执行完成后的断言
4、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。
5、ResultActions.andReturn表示执行完成后返回相应的结果。
整个测试过程非常有规律:
1、准备测试环境
2、通过MockMvc执行请求
3.1、添加验证断言
3.2、添加结果处理器
3.3、得到MvcResult进行自定义断言/进行下一步的异步请求
4、卸载测试环境
- springmvc 文件上传报错org.springframework.web.util
- springmvc 在controller类中如何读取.properties变量
- 使用eclipse 导入maven项目spring-mvc-showcase出现如
- 使用eclipse 运行springmvc官方实例spring-mvc-showca
- springmvc 使用注解参数传递格式化日期和数字
- Spring源码添加到eclipse中_eclipse导入spring源码的
- spring MVC controller重定向 传参的方法
- spring4.0 jar包 api官方下载地址
- springmvc 传递和接收数组参数
- springmvc 表单提交时间字段_springMVC form提交404