前言:
开发过程中经常需要写单元测试,记录一下单元测试spring-boot-starter-test+junit5的使用
引入内容:
引用jar包
<!-- SpringBoot测试类依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- junit --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.9.2</version><scope>test</scope></dependency>
注入service\mapper代码测试:
可以对局部函数、方法进行调用测试
importjava.util.*;importjava.util.stream.Collectors;@SpringBootTest(webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT)classDServerLocalApplicationTests{@AutowiredAService aService;@AutowiredprivateAMapper aMapper;@AutowiredprivateBMapper bMapper;@Testvoidtest(){List<A> a= aMapper.selectList(null);List<B> b = bMapper.selectList(null);...}}
测试restful接口:
可以对API调用进行模拟测试
/**
* @author CH
* @version 1.0 单元测试模板案例
* @data 2023/6/6 14:12
*/@Slf4j@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT)@AutoConfigureMockMvcpublicclassTestTemplateTests{// MockMvc是Spring提供的专用于测试Controller类privateMockMvc mockMvc;@AutowiredprivateWebApplicationContext wac;@Beforepublicvoidsetup(){// 初始化MockMvc对象;this.mockMvc =MockMvcBuilders.webAppContextSetup(this.wac).build();}@Beforepublicvoidinit(){
log.info("开始测试...");}@Afterpublicvoidafter(){
log.info("测试结束...");}/***
* 加@Transactional可以对单元测试执行的结果进行回滚,不会产生脏数据
*/@Transactional@TestpublicvoidgetTest()throwsException{ResultActions resultActions = mockMvc.perform(MockMvcRequestBuilders// URL =>注意:在测试类中,不需要将根路径写进去 ,还有很多调用方式post\put\delete.get("/appAssets/assetsTest")// 参数格式.contentType(MediaType.APPLICATION_JSON)// 传参格式很多// .content(JSONObject.toJSONString(""))// .header()// .param());MvcResult mvcResult =
resultActions
// 接口调用状态.andExpect(MockMvcResultMatchers.status().isOk())// 打印结果数据.andDo(MockMvcResultHandlers.print()).andReturn();// 取到结果进行断言Result result =JSON.parseObject(mvcResult.getResponse().getContentAsString(),Result.class);// 对结果进行断言Assertions.assertEquals("操作成功", result.getMessage());Assertions.assertEquals(200, result.getStatus());}}
本文转载自: https://blog.csdn.net/weixin_44111939/article/details/135595062
版权归原作者 牛马小陈同学 所有, 如有侵权,请联系我们删除。
版权归原作者 牛马小陈同学 所有, 如有侵权,请联系我们删除。