0
点赞
收藏
分享

微信扫一扫

SpringBoot 单元测试(三十六)


谁曾经将谁的命获取,请曾经将谁的命给予,谁曾经相信过谁的命.

上一章简单介绍了 SpringBoot自定义动态定时任务(三十五),如果没有看过,请观看上一章

SpringBoot 单元测试

SpringBoot 的单元测试,跟之前的 Junit 测试是差不多的, 没有太多的出入.

一. 引入依赖

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
     <scope>test</scope>
</dependency>

二. 单元测试

二.一 普通的 Java 单元测试

不需要引用组件, 是普通的工具类的方法测试

@Slf4j
public class NoBootTests {
    @Test
    public void testA() {
        int a = 10/2;
        log.info("打印信息: {}" ,a);
    }
}

SpringBoot 单元测试(三十六)_单元测试

不会进行启动 SpringBoot

二.二 组件测试

@SpringBootTest
@RunWith(SpringRunner.class)
@Log4j2
public class RedisDBTests {
    @Autowired
    private UserService userService;

    @Test
    public void findAllTest(){
        log.info(">>>>>>>>目前数据库中存在的用户信息:");
        List<User> userList=userService.findAll();
        userList.forEach(n->log.info(n));
    }
}

SpringBoot 单元测试(三十六)_List_02

会启动 SpringBoot

二.三 Controller 测试

可以使用 MockMvc 进行 Controller 测试

RedisController 类

@RestController
public class RedisController {
    @Autowired
    private UserService userService;

    @GetMapping("/getAll")
    public List<User> getAll() {
         return userService.findAll();
    }
}

那么对应的 Controller 测试可以:

/**
 * @ClassName:RedisDBTests
 * @Description Redis测试使用
 * @Author yjl
 * @Date 2021/5/18 17:50
 * @Version 1.0
 **/
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@Slf4j
public class ControllerTests {

    // 必须要注入 关联组件,UserService, 否则会出现问题。
    @MockBean
    private UserService userService;

    @Resource
    private MockMvc mockMvc;
    
    @Test
    public void findAllTest() throws Exception{
        MvcResult result = mockMvc.perform(
                        MockMvcRequestBuilders.get("/getAll")
                ).andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print())
                .andReturn();
        log.info("打印信息: {}", result.getResponse());
    }
}

SpringBoot 单元测试(三十六)_List_03

老蝴蝶觉得, Controller 层测试 远不如 Postman, ApiPost 这样的工具进行测试呢. 这里就不做讲解了。

二.四 基本测试基础类

二.四.一 BaseTest

@SpringBootTest
@RunWith(SpringRunner.class)
public class BaseTest {

}

二.四.二 其它类继承 BaseTest 即可

//@SpringBootTest
//@RunWith(SpringRunner.class)
@Log4j2
public class RedisDBTests extends BaseTest{
    @Autowired
    private UserService userService;

    @Test
    public void findAllTest(){
        log.info(">>>>>>>>目前数据库中存在的用户信息:");
        List<User> userList=userService.findAll();
        userList.forEach(n->log.info(n));
    }
}




本章节的代码放置在 github 上:

https://github.com/yuejianli/springboot/tree/develop/SpringBoot_Test

谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!


举报

相关推荐

0 条评论