Springboot集成单元测试--接口测试
基本接口参数的传递,对应单元测试的参数怎么处理返回值校验
基本
1.RunWith基于spring的JUnit 2.MockMvc 这个是可以用来模拟接口调用的类 3.SpringBootTest这个基于springboot,classes后面就是springboot的启动类
@RunWith(SpringJUnit4ClassRunner
.class)
@AutoConfigureMockMvc
@SpringBootTest(webEnvironment
= SpringBootTest
.WebEnvironment
.MOCK
,classes
= Application
.class)
@ActiveProfiles("package")
public class ApplicationTests {
@Autowired
MockMvc mockMvc
;
@Test
public void TestcontextLoads() {
}
}
接口参数的传递,对应单元测试的参数怎么处理
使用@PathVariable注解参数 这类参数是带在请求路径后面的但在是在?前面的参数
MvcResult mvcResult
= mockMvc
.perform(
get("/test/test_url/{Id}/{name}","1","2222")
.contentType(MediaType
.APPLICATION_JSON
))
.andExpect(status().isOk())
.andReturn();
System
.out
.println(mvcResult
.getResponse().getContentAsString());
使用@RequestParam注解参数 这类参数是带在请求路径?后面的参数
MvcResult mvcResult
= mockMvc
.perform(
get("/test/test_url")
.contentType(MediaType
.APPLICATION_JSON
))
.param("name","测试")
.param("value","测试多个")
.andExpect(status().isOk())
.andReturn();
System
.out
.println(mvcResult
.getResponse().getContentAsString());
使用@RequestBody注解参数 这个参数是分装好的
Map
<String,Object> map
= new HashMap<>(4);
map
.put("name","测试");
map
.put("value","测试多个")
MvcResult mvcResult
= mockMvc
.perform(
get("/test/test_url")
.contentType(MediaType
.APPLICATION_JSON
)
.content(JSONObject
.toJSONString(map
)))
.andExpect(status().isOk())
.andReturn();
System
.out
.println(mvcResult
.getResponse().getContentAsString());
返回值校验
Assert
.assertEquals(expected
, actual
);