基础环境:按照之前的《3、一个简单的Spring Boot web程序》文章搭建环境
1、在src/test/java/的com.example.demo包里新建一个测试类:
代码:
package com.example.demo;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.example.demo.controller.HelloWorldController;
import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloTests
{
private MockMvc mockMvc;
@Before // 这个方法在每个方法执行之前都会执行一遍
public void setUp() throws Exception
{
// 初始化MockMvc对象
mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
}
@Test
public void getHello() throws Exception
{
mockMvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()) // 返回的状态是200
.andExpect(content().string(equalTo("Hello World!"))) // 返回的Body内容是"Hello World"
.andDo(print()) //打印出请求和相应的内容
.andReturn().getResponse().getContentAsString(); //将相应的数据转换为字符串
}
}
代码解释:
-
@RunWith就是一个运行器,@RunWith(SpringRunner.class)就是指用SpringRunner来运行。以便在测试开始的时候自动创建Spring的应用上下文。如果不用@RunWith(SpringRunner.class),想创建spring容器的话,就得在web.xml配置classloder。 注解了@RunWith(SpringRunner.class)就可以直接使用spring容器,直接使用@Test注解,不用启动spring容器。
- mockMvc.perform执行一个请求;
- MockMvcRequestBuilders.get("/hello")构造一个GET请求
- .accept(MediaType.APPLICATION_JSON))指定接收返回的数据类型
- .andExpect()添加执行完成后的断言
- .andDo添加一个结果处理器,表示要对结果做点什么事情,比如此处使用MockMvcResultHandlers.print()输出整个响应结果信息。
- andReturn表示执行完成后返回相应的结果
2、找到DemoApplication.java类的main方法,右键选择Run As——Java Application
等待出现Started DemoApplication in XXX seconds
3、在上面写好的测试类HelloTests中,右键选择Run As——JUnit Test
4、查看控制台显示的结果
5、可以看到返回的数据类型为:Content type = application/json
内容为Body = Hello World!
注意:调试完之后控制台会变成两个,点击向下的倒三角可以展开切换。