本文为博主原创,未经允许不得转载:
MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,
而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。
MockMvc用到的注解 :
@RunWith(SpringJUnit4ClassRunner.class): 表示使用Spring Test组件进行单元测试;
@ContextConfiguration: 配置文件路径,用于加载和初始化spring 环境,
如果有多个配置文件,可以将括号中的信息配置为一个字符串数组来表示;
---也可通过注解进行事务配置//配置事务的回滚,对数据库的增删改都会回滚,便于测试用例的循环利用
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
以下为项目中用到的MockMvc进行单元测试的方法,
---spring-dal-test.xml该文件为数据库配置bean的配置以及事务回滚配置的文件
---spring-service-test.xml该文件为项目中依赖的资源配置初始化加载文件
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:conf/spring/spring-dal-test.xml", "classpath:conf/spring/spring-service-test.xml" }) public class AdminUserManageControllerTest { @Autowired private AdminUserManageController adminUserManageController; private MockMvc mockMvc; @Before public void setup() { // 初始化构建 mockMvc = MockMvcBuilders.standaloneSetup(adminUserManageController).build(); } @Test public void queryAdminUserByPageTest001() throws Exception { // 分页查询用户信息 mockMvc.perform( //执行一个RequestBuilder请求,会自动执行SpringMVC的流程并映射到相应的控制器执行处理; post("/adminUserManage/queryAdminUserByPage") //模拟请求的url,及请求的方法是post .content("{\"pageNum\":1,\"pageSize\":20}")) //请求的参数体 .andExpect( status().isOk() //预期返回的状态码是200 ) .andReturn().getResponse().getContentAsString(); //将相应的数据转换为字符串 } }