这章其实挺简单,我单独拉出来是因为部分人的测试项目我并不可以用,所以单独拉出来作为重点,因为单元测试在我们开发中非常重要
第一步 添加测试依赖
srpingboot的单元测试非常简单,我们需要添加如下依赖
<!-- springboot的test依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency>
第二步添加测试方法
我们创建如下的类,我稍作解释
@RunWith(SpringRunner.class) @SpringBootTest(classes = HelloApplication.class) public class HelloTests { private MockMvc mvc; @Before public void setUp() throws Exception { mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build(); } @Test public void getHello() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn(); } }
先从标签说起
@RunWith(SpringRunner.class) 是运行器,运行我们需要启动的SpringRunner.class类
@SpringBootTest(classes = HelloApplication.class) 表示我们需要测试的springboot启动类
@Before 是运行前的一个配置工作
@Test 表示当前测试主方法
大然后说是MockMvc
MockMvc这个类是用来构建请求的一个类,用来作为我们测试的主要功能
mvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build();
这段表示建立一个请求类型是针对HelloWorldController的。
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk()).andDo(MockMvcResultHandlers.print()).andReturn();
这段表示请求类型,请求路径,接收的消息类型,接收的状态码类型,最后andDo(MockMvcResultHandlers.print()这段表示将结果打印出来
第三步启动项目查看结果
启动测试类的时候并不用启动我们的启动器了,启动测试类会自动启动。然后我们会得到如下信息展示我们这次请求的报文信息
MockHttpServletRequest:
HTTP Method = GET
Request URI = /hello
Parameters = {}
Headers = {Accept=[application/json]}
Body = <no character encoding set>
Session Attrs = {}
Handler:
Type = com.dhh.Controller.HelloWorldController
Method = public java.lang.String com.dhh.Controller.HelloWorldController.helloSpringBoot()
Async:
Async started = false
Async result = null
Resolved Exception:
Type = null
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 200
Error message = null
Headers = {Content-Type=[application/json;charset=ISO-8859-1], Content-Length=[28]}
Content type = application/json;charset=ISO-8859-1
Body = hello Spring ddddddddddBoot
Forwarded URL = null
Redirected URL = null
Cookies = []
到现在我们的测试就完成了