赞
踩
开发过程中经常需要写单元测试,记录一下单元测试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>
可以对局部函数、方法进行调用测试
import java.util.*; import java.util.stream.Collectors; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class DServerLocalApplicationTests { @Autowired AService aService; @Autowired private AMapper aMapper; @Autowired private BMapper bMapper; @Test void test() { List<A> a= aMapper.selectList(null); List<B> b = bMapper.selectList(null); ... } }
可以对API调用进行模拟测试
/** * @author CH * @version 1.0 单元测试模板案例 * @data 2023/6/6 14:12 */ @Slf4j @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @AutoConfigureMockMvc public class TestTemplateTests { // MockMvc是Spring提供的专用于测试Controller类 private MockMvc mockMvc; @Autowired private WebApplicationContext wac; @Before public void setup() { // 初始化MockMvc对象; this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); } @Before public void init() { log.info("开始测试..."); } @After public void after() { log.info("测试结束..."); } /*** * 加@Transactional可以对单元测试执行的结果进行回滚,不会产生脏数据 */ @Transactional @Test public void getTest() throws Exception { 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()); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。