- // 对于前后端分离的项目而言, 无法直接从前端静态代码中测试接口的正确性, 因此可以通过 MockMVC 来模拟 HTTP 请求
- @RunWith(SpringRunner.class) //public final class SpringRunner extends SpringJUnit4ClassRunner
- @SpringBootTest //@SpringBootTest 注解是 SpringBoot 自 1.4.0 版本开始引入的一个用于测试的注解
- // 测试环境使用, 用来表示测试环境使用的 ApplicationContext 将是 webApplicationContext 类型的 作用是模拟 ServletContext
- @WebAppConfiguration
- public class PortalUserApplicationTest {
- /**
- * WebApplicationContext, 是继承于 ApplicationContext 的一个接口,
- * 扩展了 ApplicationContext, 是专门为 Web 应用准备的, 它允许从相对于 Web 根目录的路径中装载配置文件完成初始化.
- */
- @Autowired
- private WebApplicationContext webApplicationContext;
- /**
- *
- *MockMvc 实现了对 Http 请求的模拟, 能够直接使用网络的形式
- *
- * mockMvc 调用 perform, 执行一个 RequestBuilder 请求, 调用 controller 的业务处理逻辑;
- *
- * perform 返回 ResultActions, 返回操作结果, 通过 ResultActions, 提供了统一的验证方式;
- *
- */
- private MockMvc mockMvc;
- /**
- * MockMvcBuilders 是 MockMvc 的构造器;
- *
- * MockMvc 是 spring 测试下的一个非常好用的类, 他们的初始化需要在 setUp 中进行
- */
- @Before
- public void setup() {
- this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
- }
- @Test
- public void test() throws Exception {
- String uri = "接口路径";
- String str = "接口要传的参数";
- //MockMvcRequestBuilders 用来构建请求 指定传参方式 和 接口路径 这里是 post
- MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post(uri)
- .contentType(MediaType.APPLICATION_JSON) // 数据格式
- .content(str))
- .andDo(MockMvcResultHandlers.print()).andReturn();
- int status = mvcResult.getResponse().getStatus(); // 得到返回状态码
- String content = mvcResult.getResponse().getContentAsString(); // 得到接口返回结果
- System.out.println("返回:" + JSON.parseObject(content));
- }
- }
控制台部分打印信息
来源: http://www.bubuko.com/infodetail-3357302.html