当前位置: 首页 > wzjs >正文

装饰公司网站模板wordpress万能主题

装饰公司网站模板,wordpress万能主题,整站多关键词优化,wordpress 接收json文章目录 引言标准用法必需依赖项核心注解说明代码示例 当涉及静态方法时的测试策略必需依赖项核心注解说明代码示例 引言 之前在编写 Controller 层的单元测试时,我一直使用 SpringBootTest 注解,但它会加载整个 Spring 应用上下文,资源开销…

文章目录

      • 引言
      • 标准用法
        • 必需依赖项
        • 核心注解说明
        • 代码示例
      • 当涉及静态方法时的测试策略
        • 必需依赖项
        • 核心注解说明
        • 代码示例

引言

之前在编写 Controller 层的单元测试时,我一直使用 @SpringBootTest 注解,但它会加载整个 Spring 应用上下文,资源开销大,我更倾向于采用更轻量级的测试策略,专注于 Web 层的功能验证。

在最近的单元测试撰写中,我采用了新的方法,并在此归纳记录:

标准用法

必需依赖项

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><!-- 版本可根据项目实际情况调整,需要和spring-boot版本适应--><scope>test</scope>
</dependency>
<!-- 如果不报错,一般不需要引入 -->
<dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-launcher</artifactId><version>1.8.2</version><scope>test</scope>
</dependency>
<!-- 仅在需兼容 JUnit 4/3 时使用 -->
<dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><version>5.8.2</version><scope>test</scope>
</dependency>
核心注解说明
  • @WebMvcTest(controllers = YourController.class)

Spring Boot 提供的切片测试注解,专门用于测试 MVC 控制器层。它只加载 Spring MVC 相关组件(如 @Controller、@RestController、@ControllerAdvice 等),不会加载 Service、Repository 等其他 Bean。

  • @ContextConfiguration(classes = YourController.class)

明确指定测试所需加载的配置类或组件,避免因自动注入无关 Bean 而导致测试失败。

代码示例
@WebMvcTest(controllers = YourController.class)
@ContextConfiguration(classes = YourController.class)
class YourControllerTest {@Autowiredprivate MockMvc mockMvc;@MockBeanprivate YourService yourService;@Autowiredprivate ObjectMapper objectMapper;@Testvoid getSomething() throws Exception {// 模拟service层方法调用when(yourService.getSomething(anyString())).thenReturn(R.ok());// 模拟请求参数HashMap<String, Object> requestBody = new HashMap<>();requestBody.put("testParam", "test");// 开始模拟mockMvc.perform(MockMvcRequestBuilders.post("/xx/getSomething").contentType(MediaType.APPLICATION_JSON).content(objectMapper.writeValueAsString(requestBody))).andDo(MockMvcResultHandlers.print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(jsonPath("$.code").value(R.ok().getCode())).andExpect(jsonPath("$.data").isEmpty());}
}

当涉及静态方法时的测试策略

在极端情况下,如果 Controller 中存在通过工厂类静态方法构造的依赖(而不是通过 Spring 注入),该如何进行测试?

必需依赖项

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><!-- 版本自选,需要和spring-boot版本适应--><exclusions><exclusion><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId></exclusion></exclusions><scope>test</scope>
</dependency><!--不报错就没必要加它-->
<dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-launcher</artifactId><version>1.8.2</version><scope>test</scope>
</dependency>
<dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><version>5.8.2</version><scope>test</scope>
</dependency>
<!--旧版本 mockito-core 不支持静态方法 mock-->
<dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>5.2.0</version><scope>test</scope>
</dependency>
核心注解说明
  • @ExtendWith(MockitoExtension.class)

启用 Mockito 的注解功能,包括 @Mock、@InjectMocks、@Spy 等支持。

代码示例
@ExtendWith(MockitoExtension.class)
class YourControllerTest {private ObjectMapper objectMapper = new ObjectMapper();@Testvoid getSomething() throws Exception {try(MockedStatic<XxxFactory> mocked = mockStatic(XxxFactory.class)){//用来替换的对象YourInstance instance = mock(YourInstance.class);//静态替换mocked.when(XxxFactory::getYourInstance).thenReturn(instance);//模拟方法调用when(instance.getSomething(anyString())).thenReturn(R.ok());// 模拟请求参数HashMap<String, Object> requestBody = new HashMap<>();requestBody.put("testParam", "test");// 开始模拟mockMvc.perform(MockMvcRequestBuilders.post("/xx/getSomething").contentType(MediaType.APPLICATION_JSON).content(objectMapper.writeValueAsString(requestBody))).andDo(MockMvcResultHandlers.print()).andExpect(MockMvcResultMatchers.status().isOk()).andExpect(jsonPath("$.code").value(R.ok().getCode())).andExpect(jsonPath("$.data").isEmpty());}}}
http://www.dtcms.com/wzjs/584889.html

相关文章:

  • ui设计分析案例seo1888网站建设
  • 浏览器打开网站404线下推广平台有哪些
  • 做土特产的网站全球军事新闻最新消息
  • 上海专门做培训的网站linux下装wordpress
  • 云南酒店网站建设seo推广优化工具
  • 建设银行余额明细查询东莞网站优化seo
  • 零食网站建设的文案策划书网站备案 写共享可以吗
  • 保险做的好的网站有哪些wordpress更换主机
  • 西安市长安区规划建设局网站茂名公司网站开发
  • 国外电商网站有哪些郑州一建集团有限公司官网
  • 免费推广网站大全网想做机械加工和橡胶生意怎么做网站
  • 上海网站开发技术最好公司电话建站网站和维护需要会什么区别
  • 四川省的住房和城乡建设厅网站公众号商城制作价格
  • 怎么查询一个网站有没有做竞价项目交流平台
  • 九江商城网站建设网络科技公司起名大全参考
  • 小说类型网站怎么做网站开发进度报告
  • 做网站后端的是什么部门广安建设企业网站
  • 成都网站建设 培训班连网站建设
  • 给网站做seo的必要性wordpress 权限是一个类还是一个函数
  • 咸宁网网站wordpress百家号主题
  • 天津市住房和城乡建设厅网站手机销售网站怎么做
  • 国外有哪些网站做视频添加字幕的网站
  • 企业网站不备案可以吗专业东莞网站建设报价
  • 江苏做网站价格外贸鞋的网站建设
  • 犀牛云网站做的怎么样医院门户网站设计
  • 有免费网站服务器吗吉林省四平市网站建设
  • 网站文章怎么更新做食物网站应该考虑些什么意思
  • asp网站开发基础网站搜索引擎优化推广
  • 广州平台网站建设宁波网上办事大厅
  • 太原网站建设总部地址大连装修公司排名榜