上一章简单介绍了 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;
("打印信息: {}" ,a);
}
}
不会进行启动 SpringBoot
二.二 组件测试
@SpringBootTest
@RunWith(SpringRunner.class)
@Log4j2
public class RedisDBTests {
@Autowired
private UserService userService;
@Test
public void findAllTest(){
(">>>>>>>>目前数据库中存在的用户信息:");
List<User> userList=userService.findAll();
userList.forEach(n->(n));
}
}
会启动 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();
("打印信息: {}", result.getResponse());
}
}
老蝴蝶觉得, 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(){
(">>>>>>>>目前数据库中存在的用户信息:");
List<User> userList=userService.findAll();
userList.forEach(n->(n));
}
}