Java程序设计:spring boot(10)——单元测试

1 pom.xml 测试依赖添加

java 复制代码
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
</dependency>

2 Service业务方法测试

以 UserService 为例,src/test/java ⽬录下添加测试包 com.xxxx.sprinboot.service 定义测试类代码如下 :

java 复制代码
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Starter.class})
public class TestUserService {
 private Logger log = LoggerFactory.getLogger(TestUserService.class);
 @Resource
 private UserService userService;
 @Before
 public void before(){
 log.info("单元测试开始...");
 }
 @Test
 public void test01(){
 log.info("⽤户记录:{}", userService.queryUserById(1).toString());
 }
 @Test
 public void test02(){
 log.info("⽤户记录:{}", userService.queryUserByParams(new
UserQuery()).toString());
 }
 @After
 public void after(){
 log.info("单元测试结束...");
 }
}

3 控制层接口测试方法

视图层代码使⽤ MockMvc 进⾏测试,以UserCntroller 为例,src/test/java ⽬录下添加测试包 com. xxxx.sprinboot.controller 定义测试类代码如下:

java 复制代码
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Starter.class})
@AutoConfigureMockMvc
public class TestUserController {
 
 private Logger log = LoggerFactory.getLogger(TestUserController.class);
 @Autowired
 private MockMvc mockMvc;
 //⽤户列表查询
 @Test
 public void apiTest01() throws Exception{
 
 // 构建请求
 MockHttpServletRequestBuilder request =
MockMvcRequestBuilders.get("/user/list")
 .contentType("text/html") // 指定请求的contentType头信息
 .accept(MediaType.APPLICATION_JSON); // 指定请求的Accept头信息
 
 // 发送请求,获取请求结果
 ResultActions perform = mockMvc.perform(request);
 
 // 请求结果校验
 perform.andExpect(MockMvcResultMatchers.status().isOk());
 
 // 表示执⾏完成后返回相应的结果
 MvcResult mvcResult = perform.andReturn();
 // 得到执⾏后的响应
 MockHttpServletResponse response = mvcResult.getResponse();
 
 log.info("响应状态:{}", response.getStatus());
 log.info("响应内容:{}", response.getContentAsString());;
 
 }
 // ⽤户名记录查询
 @Test
 public void apiTest02() throws Exception{
 MvcResult mvcResult =
mockMvc.perform(MockMvcRequestBuilders.get("/user/admin")).
 andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
 log.info("响应状态:{}",mvcResult.getResponse().getStatus());
 log.info("响应内容:{}",mvcResult.getResponse().getContentAsString());;
 }
}
相关推荐
_Evan_Yao4 小时前
Redis 缓存穿透、击穿、雪崩,一次讲清!
java·spring·mybatis
梓豪csd5 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
秋饼5 小时前
Spring AI 2.1 Message Parts 深度实战:推理签名回放与跨轮记忆持久化的源码级落地
java·ai·技术分享·后端开发
thefool1122666 小时前
TCP 1
java·1024程序员节
paopaokaka_luck7 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
金銀銅鐵8 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(下)
java·后端·ai编程
AI人工智能+电脑小能手8 小时前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
paopaokaka_luck10 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_322414280410 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
考虑考虑11 小时前
JDK26的JEP 500属性
java·后端·java ee