当前位置:   article > 正文

单元测试-spring-boot-starter-test+junit5

单元测试-spring-boot-starter-test+junit5

前言:

开发过程中经常需要写单元测试,记录一下单元测试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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

注入service\mapper代码测试:

可以对局部函数、方法进行调用测试

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); 
        ...
        
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

测试restful接口:

可以对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());
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/250643
推荐阅读
相关标签
  

闽ICP备14008679号