🎈博客主页:🌈我的主页🌈
🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏
🎈本文由 【泠青沼~】 原创,首发于 CSDN🚩🚩🚩
🎈由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!🌠个人主页
🌟 一、单元测试依赖解析
🌟 二、单元测试注解分析
@SpringBootTest相当于springMvc中单元测试中的applicationContext,用于配置上下文环境
注解内部本身就十分重要的属性:
webEnvironment属性: 指定Web的应用环境
- MOCK 指定的默认取值 提供一个模拟的Servlet环境(内置Servlet环境并没有启动) 并基于MOCKMvc来进行测试
- RANDOM_PORT 提供随机的端口 提供一个真正的Servlet
- DEFINE_PORT 提供默认端口 提供一个真正的Servlet
- NONE 不提供Web环境
(一般不用配置,SpringBoot自动配置好的)
classes属性:指定应用的启动类
(不需要配置,一般都是SpringBoot自动去寻找)
@Transactional注解:
应用于数据库应用中,涉及到数据库的操作,操作完成后会自动进行一个回滚,避免脏数据,如果使用RANDOM_PORT和DEFINE_PORT的Web应用环境,Http客户端服务器将在不同的线程中运行,分离事务,事务不会回滚
🌟 三、Controller测试
🌟🌟 3.1、测试实体类
public class User {
private Long id;
private String username;
get和set方法省略
}
🌟🌟 3.2、测试Controller类
@RestController
public class UserController {
@GetMapping("/hello/{id}")
public User getUserByid(@PathVariable Long id){
User user = new User();
user.setUsername("dong");
user.setId(id);
return user;
}
}
🌟🌟 3.2、开启Controller单元测试
进入到测试类中,注入web应用上下文webApplicationContext与mockMvc
@Autowired
WebApplicationContext webApplicationContext;
MockMvc mockMvc;
初始化mockMvc(两种方式)
//初始化mockmvc
@BeforeEach
void setUp(){
//自动去查找Controller
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
//初始化mockmvc
@BeforeEach
void setUp(){
//自己指定要测试的Controller
mockMvc = MockMvcBuilders.standaloneSetup(new UserController()).build();
}
测试Controller
@Test
void contextLoads() throws Exception {
mockMvc.perform(MockMvcRequestBuilders
//访问的URL和参数
.get("/hello/99")
//允许的编码格式
.accept(MediaType.APPLICATION_JSON_UTF8))
//期望返回的状态码
.andExpect(MockMvcResultMatchers.status().isOk())
//编辑期望收到的JSON字符串
.andExpect(MockMvcResultMatchers.content().string("{\"id\":99,\"username\":\"dong\"}"))
//输出请求和响应结果
.andDo(MockMvcResultHandlers.print());
}
文章来源:https://www.toymoban.com/news/detail-425845.html
🌟 四、Service测试
🌟🌟 4.1、测试UserDao类
@Repository
public class UserDao {
public User getUserById(long id){
User user = new User();
user.setId(id);
user.setUsername("dong");
return user;
}
}
🌟🌟 4.2、测试Service类
@Service
public class UserService {
@Autowired
UserDao userDao;
public User getUserById(long id){
return userDao.getUserById(id);
}
}
🌟🌟 4.3、开启Service单元测试
//替换UserDao,不使用数据的Dao,使用测试的Dao
@MockBean
UserDao userDao;
@Autowired
UserService userService;
@Test
void Test1(){
User user = new User();
user.setUsername("123");
user.setId(99L);
//当调用userDao的getUserById方法传入参数99L,就返回一个对象
Mockito.when(userDao.getUserById(99L)).thenReturn(user);
User u = userService.getUserById(99L);
//测试获得的对象与预期的对象是否一致
Assertions.assertEquals(99L,u.getId());
Assertions.assertEquals("123",u.getUsername());
}
文章来源地址https://www.toymoban.com/news/detail-425845.html
到了这里,关于Spring Boot 单元测试(Controller测试与Service测试)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!