ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MockMvc模拟对controller进行单元测试

2019-04-17 19:49:15  阅读:209  来源: 互联网

标签:xml 请求 spring 单元测试 controller test MockMvc


本文为博主原创,未经允许不得转载:

 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();  //将相应的数据转换为字符串
    }
}    

 

标签:xml,请求,spring,单元测试,controller,test,MockMvc
来源: https://www.cnblogs.com/zjdxr-up/p/10725713.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有