Spring Junit 测试样例

SpringMVC 框架下的junit测试方式

  1 package com.sixeco.user.controller;
  2 
  3 import org.apache.logging.log4j.LogManager;
  4 import org.apache.logging.log4j.Logger;
  5 import org.junit.Before;
  6 import org.junit.Test;
  7 import org.junit.runner.RunWith;
  8 import org.springframework.beans.factory.annotation.Autowired;
  9 import org.springframework.http.MediaType;
 10 import org.springframework.test.annotation.Rollback;
 11 import org.springframework.test.context.ContextConfiguration;
 12 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 13 import org.springframework.test.context.transaction.TransactionConfiguration;
 14 import org.springframework.test.context.web.WebAppConfiguration;
 15 import org.springframework.test.web.servlet.MockMvc;
 16 import org.springframework.test.web.servlet.MvcResult;
 17 import org.springframework.test.web.servlet.ResultActions;
 18 import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
 19 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
 20 import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
 21 import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
 22 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 23 import org.springframework.transaction.annotation.Transactional;
 24 import org.springframework.web.context.WebApplicationContext;
 25 
 26 import com.alibaba.fastjson.JSONObject;
 27 
 28 /**
 29  * 测试类
 30  * 
 31  * @author songxiaotong
 32  * @version [版本号, 2017年09月15日]
 33  * @see [相关类/方法]
 34  * @since [产品/模块版本]
 35  */
 36 @RunWith(SpringJUnit4ClassRunner.class)
 37 // 设置读取的spring配置文件
 38 @ContextConfiguration({ "classpath:servlet-context.xml" })
 39 // 当然 你可以声明一个事务管理 每个单元测试都进行事务回滚 无论成功与否
 40 @TransactionConfiguration(defaultRollback = true)
 41 @Transactional
 42 @WebAppConfiguration
 43 public class UserControllerTest {
 44 
 45     /**
 46      * 日志记录工具
 47      */
 48     private static final Logger LOGGER = LogManager.getLogger(UserControllerTest.class);
 49 
 50     @Autowired
 51     private WebApplicationContext wac;
 52 
 53     private MockMvc mockMvc;
 54 
 55     @Before
 56     public void setUp() throws Exception {
 57         this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
 58     }
 59 
 60     @Test
 61     @Rollback(false)
 62     public void aaa() {
 63         LOGGER.info("12312312312");
 64         System.out.println("aaa");
 65     }
 66 
 67     /**
 68      * Json请求入参方式测试接口
 69      * 
 70      * @see [类、类#方法、类#成员]
 71      */
 72     @Test
 73     // 有些单元测试你不希望回滚
 74     @Rollback(true)
 75     public void Test() {
 76         try {
 77 
 78             // 构造一个请求
 79             MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/sixeco/user/sendverifycode");
 80             // 设置请求头
 81             requestBuilder.contentType(MediaType.APPLICATION_JSON);
 82 
 83             // 设置参数
 84             requestBuilder.param("mobile", "15812345678");
 85 
 86             // 执行一个请求;
 87             ResultActions result = mockMvc.perform(requestBuilder);
 88 
 89             // 添加执行完成后的断言
 90             result.andExpect(MockMvcResultMatchers.status().isOk());
 91 
 92             // 添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。
 93             result.andDo(MockMvcResultHandlers.print());
 94 
 95             // 表示执行完成后返回相应的结果。
 96             MvcResult mvcResult = result.andReturn();
 97 
 98             LOGGER.info(mvcResult.getResponse().getContentAsString());
 99 
100             LOGGER.info("test success");
101         } catch (Exception e) {
102             LOGGER.error(e.getMessage());
103             e.printStackTrace();
104         }
105     }
106 
107     /**
108      * 普通入参请求方式测试接口
109      * 
110      * @see [类、类#方法、类#成员]
111      */
112     @Test
113     // 有些单元测试你不希望回滚
114     // @Rollback(false)
115     public void regularRequestTest() {
116         try {
117 
118             MockHttpServletRequestBuilder b = MockMvcRequestBuilders.post("/sixeco/user/sendverifycode");
119             b.contentType(MediaType.APPLICATION_JSON);
120             b.param("mobile", "15812345678");
121 
122             mockMvc.perform(b).andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print());
123             // LOGGER.info("test success");
124         } catch (Exception e) {
125             // LOGGER.error(e.getMessage());
126             e.printStackTrace();
127         }
128     }
129 }

 

posted @ 2017-07-31 16:32  不知名的宋某某  阅读(220)  评论(0编辑  收藏  举报