如何编写针对Restful API的测试用例
1、首先需要引入spring-boot-starter-test,会帮我们把测试框架引入进来。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

2、首先我们创建一个测试类UserControllerTest,然后加上@RunWith(SpringRunner.class和@SpringBootTest的注解。接下来我们通过@Autowired
private WebApplicationContext wac来伪造web环境。

3、然后使用@Before注解来初始化mockMvc,@Before注解会在每个测试用例调用之前执行。
@Before
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}

4、接下来我们写一个查询请求的测试方法,在该方法上添加@Test注解,使用MockMvcRequestBuilders.get()去模拟一个Get请求,MediaType.APPLICATION_JSON_UTF8指定媒体类型,MockMvcResultMatchers.status().isOk()表示结果,如下所示。
@Test
public void testQuery() throws Exception {
// 模拟一个Get请求
mockMvc.perform(MockMvcRequestBuilders.get("/user")
// 媒体类型
.contentType(MediaType.APPLICATION_JSON_UTF8))
// 对请求结果的期望
.andExpect(MockMvcResultMatchers.status().isOk())
// 期望返回的是一个集合,集合的长度是3
.andExpect(MockMvcResultMatchers
.jsonPath("$.length()")
.value(3));
}

5、我们执行该单元测试,但是测试没有通过,原因是因为我们期望的返回码是200,但是实际返回的是404,是因为我们还没有编写一个/user的请求。

6、新增一个/user请求的类,返回值为null如下图所示,执行单元测试后虽然不报404的错误了,但是测试依旧不通过,因为期望的返回值不能是null,因此我们在编写代码的时候还要给一个确切的返回值,我们返回有三个对象的list,可以看到通过了单元测试。


7、如果想在单元测试中添加参数,使用.param()进行参数传递,相应的方法中使用@RequestParam注解传递参数。


8、如果想添加分页参数到单元测试中,我们在方法中使用Pageable去接收参数,使用@PageableDefault()注解给分页添加默认值。


声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:56
阅读量:58
阅读量:96
阅读量:33
阅读量:61