简单介绍一下Spring,它是一个轻量级开源框架,简单的来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。特点方便解耦,简化开发,AOP编程的支持声明式,事务的支持以及降低Java EE API的使用难度等。
目前主流的Web MVC框架除了Struts之外就是SpringMVC,不过要想灵活运用SpringMVC来应对大多说的web开发除了必须掌握其配置和原理外还需要会测试。在Spring3.2版本之前测试一般都是直接new控制器注入依赖进行判断返回,但无法测试基础配置参数如拦截器、数据绑定、类型转换等等。从Spring3.2版本之后这些都可以完成,并且是测试一个完成的SpringMVC流程。下面为大家分享一下SpringMVC框架中MockMvc注解含义及其原理分析。
SpringJunitTestMock测试类下各个注解/变量的含义如下:
1、下面对各变量/注解进行解释
@WebAppConfiguration
表明该类会使用web应用程序的默认根目录来载入ApplicationContext, 默认的更目录是"src/main/webapp", 如果需要更改这个更目录可以修改该注释的value值。
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration(value = "src/main/webapp")
@ContextHierarchy({
@ContextConfiguration(name = "parent" ,locations = "classpath:applicationContext.xml"),
})
@RunWith
使用Spring-Test框架;在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境。
@ContextConfiguration(location = ): 指定需要加载的spring配置文件的地址
@Mock: 需要被Mock的对象
@Transactional:不是必须的,是和@TestExecutionListeners中的TransactionalTestExecutionListener.class配合使用,用于保证插入的数据库中的测试数据,在测试完后,事务回滚,将插入的数据给删除掉,保证数据库的干净。如果没有显示的指定@Transactional,那么插入到数据库中的数据就是真实数据。
@InjectMocks: 需要将Mock对象注入的对象, 此处就是Controller
@Before: 在每次Test方法之前运行的方法,目前把登陆信