如何使用spring测试模块测试请求功能

使用spring测试模块测试请求功能

SSM项目中使用了PageHelper插件对数据进行拦截与分页。

一、利用Spring提供的测试模块模拟请求

首先引入相关依赖:


  4.0.0
  com.qroxy
  ssm
  0.0.1-SNAPSHOT
  war
  
  
  
  
  

    org.springframework
    spring-webmvc
    4.3.7.RELEASE

  
  

    org.springframework
    spring-jdbc
    4.3.7.RELEASE

    
    

    org.springframework
    spring-aspects
    4.3.7.RELEASE
    
    


    

    org.mybatis
    mybatis
    3.4.2

    
    

    org.mybatis
    mybatis-spring
    1.3.1

    



    org.springframework
    spring-test
    4.3.7.RELEASE
    test



    com.github.pagehelper
    pagehelper
    5.0.0

    
    

    c3p0
    c3p0
    0.9.1.2

    
    

    mysql
    mysql-connector-java
    8.0.11




    jstl
    jstl
    1.2



    javax.servlet
    javax.servlet-api
    3.1.0
    
    provided



    junit
    junit
    4.12
    test




    org.mybatis.generator
    mybatis-generator-core
    1.3.7


  

二、在 MyBatis 配置 xml 中配置拦截器插件

    
    
    

ps:必须在后面配置插件

三、新建一个测试类

1、引入spring的单元测试使用注解和加载配置文件的注解
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(配置文件路径)

接着必须再加一个@WebAppConfiguration注解,因为初始化MockMvc时需要注入SpringMVC本身。

使用MockMVC作为虚拟的MVC
//  虚拟的mvc请求,获取处理结果
    @Autowired
    WebApplicationContext wContext;
    MockMvc mockMvc;
//  每次用前初始化,ps:用的是junit的before
    @Before
    public void initMockMvc() {
        mockMvc=MockMvcBuilders.webAppContextSetup(wContext).build();
    }
四、利用虚拟MVC模拟页面请求,请求员工数据并做分页
@Test 
    public void testPAge() throws Exception {
        MvcResult mvcResult=mockMvc.perform(MockMvcRequestBuilders.get("/emps")
                .param("pn", "5")).andReturn();
//      请求成功后,请求域中会有pageINfo,我们取出pageInfo进行验证
        MockHttpServletRequest request=mvcResult.getRequest();
    
    PageInfo aInfo=(PageInfo)request.getAttribute("PageInfo");
    System.out.println("当前页码:"+aInfo.getPageNum());
    System.out.println("总页码:"+aInfo.getPages());
    System.out.println("总记录数:"+aInfo.getTotal());
    System.out.println("在页面需要连续显示的的页码:");
    int[] nums=aInfo.getNavigatepageNums();
    for(int i:nums) {
        System.out.println(" "+i);
    }
//获取员工数据
List list=aInfo.getList();
for(Employee employee:list) {
    System.out.println("ID "+employee.getEmpId()+",name:"+employee.getEmpName());
}
    }

五、运行测试

然后就把测试数据拿出来了。

image.png

需要注意的是对MockMVC的初始化以及WebApplicationContext的注入,其他的都是常规操作。

你可能感兴趣的:(如何使用spring测试模块测试请求功能)