首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

org.springframework.context.NoSuchMessageException控制器中的Springboot Mockito测试和自动连接messageSource

org.springframework.context.NoSuchMessageException 是 Spring 框架中的一个异常类,表示在处理消息时发生错误,无法找到对应的消息。

在控制器中进行 Spring Boot Mockito 测试和自动连接 messageSource 时,如果遇到 org.springframework.context.NoSuchMessageException 异常,可能是由以下原因引起的:

  1. 未正确配置 messageSourcemessageSource 是 Spring Framework 提供的一个接口,用于处理国际化消息。在 Spring Boot 中,通常会使用 ResourceBundleMessageSource 实现类。在测试中,可能没有正确配置或初始化 messageSource 对象,导致在获取消息时抛出异常。
  2. 缺少消息资源文件:messageSource 在处理消息时需要依赖对应的消息资源文件。通常情况下,这些资源文件以 .properties 格式存储,并根据语言和地区的不同进行命名。如果缺少对应的资源文件,或者资源文件的命名与配置不匹配,就会导致无法找到对应的消息,从而抛出 NoSuchMessageException 异常。

为了解决这个问题,可以按照以下步骤进行处理:

  1. 确保正确配置 messageSource:在 Spring Boot 的配置文件(如 application.propertiesapplication.yml)中,添加以下配置项:
代码语言:txt
复制
spring:
  messages:
    basename: messages

这将告诉 Spring Boot 使用名为 messages 的消息资源文件。

  1. 创建消息资源文件:在资源目录下创建一个名为 messages.properties 的文件(对应默认语言和地区)。如果需要支持其他语言和地区,可以创建对应的资源文件,如 messages_en_US.properties
  2. 在测试中正确初始化 messageSource 对象:在测试类中,使用 Mockito 或其他适当的方式初始化 messageSource 对象,并将其注入到控制器中。例如,可以使用 @MockBean 注解模拟 messageSource 对象,并使用 @Autowired 注解将其注入到控制器中。

以下是一个示例代码片段:

代码语言:txt
复制
@RunWith(SpringRunner.class)
@WebMvcTest(YourController.class)
public class YourControllerTest {

  @Autowired
  private MockMvc mockMvc;

  @MockBean
  private MessageSource messageSource;

  @Autowired
  private YourController yourController;

  @Test
  public void yourTest() throws Exception {
    // 使用 Mockito 设置 messageSource 对象的行为

    // 例如,当调用 messageSource.getMessage(key, null, Locale.getDefault()) 时,返回一个预设的消息字符串
    when(messageSource.getMessage(eq("your.key"), isNull(), eq(Locale.getDefault())))
        .thenReturn("Your message");

    // 执行控制器方法并进行断言

    mockMvc.perform(get("/your-endpoint"))
        .andExpect(status().isOk())
        .andExpect(content().string("Your message"));
  }
}

请注意,上述示例中的代码仅用于说明概念,实际使用中可能需要根据具体情况进行调整和补充。

推荐的腾讯云相关产品和产品介绍链接地址:

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SpringBoot基础系列】手把手实现国际化支持实例开发

SpringBoot提供了国际化支持,网上也有相关教程,然而实际体验时候,发现并没有预期那么顺利;本文将介绍一下SpringBoot如何支持国家化,以及在支持过程,一些注意事项 <!...MessageSourceSpringBoot主要借助MessageSource来获取不同语言value信息 如一个最基本封装 public class MsgUtil { private...测试demo 接下来写一个基础测试demo,根据传参来修改LocalContextHolder值,从而实现不同语言切换 @Controller @SpringBootApplication public...采用是CookieLocaleResolver,因此会在cookie缓存语言信息,一次修改,后续都会生效 测试如下 @GetMapping(path = "say") @ResponseBody public...一灰灰Blog 尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏错误之处,如发现bug或者有更好建议,欢迎批评指正,不吝感激 下面一灰灰个人博客,记录所有学习工作博文,欢迎大家前去逛逛

47421
  • MeterSphere单元测试-Mockito-Inline出场

    根据集成测试用例补充单元测试用例 在之前测试旅程,我们新建了测试计划并将测试用例纳入该计划来执行。以下是上述用例执行之后对添加测试计划一个代码覆盖率。 ?...补充用例1-测试计划名称重复异常 来看一下addTestPlan第一个if代码。从设计上来讲,这是一个哨兵断言,当存在重复测试计划名称时,可以直接抛异常退出,提高程序处理效率。...由于集成测试场景是测试计划被成功创建,因此这个if判断并没有进入,而是进入了继续创建测试计划逻辑。 ? 因此,我们需要在此处补充一个因为测试计划名称重复导致测试计划创建失败案例。...在getTestPlanByName方法,通过查询数据库方式,验证在给定workspace是否存在给定测试计划名称,如果存在则返回查询到测试计划列表。 ?...mock静态方法能力,只是目前还没有被吸收进Mockito-core,因此,需要将Mockito依赖修改为对Mockito-Inline依赖。

    3.3K10

    自动测试那些误解偏见

    从考核标准上来说,Bug率数值越小就说明越好,基于这个结果,会引导团队成员做出一些对长远整体效率无益行为,例如: 增大基数,增加无意义代码 把定长循环分开写,写成顺序方法 把可配置信息写死到代码...由于测试自动执行,所以不存在执行过程疏忽错误,完全取决于测试设计质量。一旦软件通过了强有力自动测试后,软件信任度自然会增加。...要么追求代码上数量,而实际没什么效果。 如果写个小工具,能辅助提高测试效率,算不算自动测试? 如果写个代码,能造一些测试数据,算不算上自动测试一部分?...而到了项目后期维护期,自动化再介入为回归测试做准备,可以最大化自动化收益。 推论3:自动程度自动化率 这里自动程度是指整个软件研发活动引入自动程度。...推论2说,有些项目早期可能不太适合高度自动化,但是项目早期仍然可以选定某些环节进行自动化。比如稳定公用接口,软件编译部署,环境搭建等从一开始就比较稳定部分。

    77730

    自动测试那些误解偏见

    从考核标准上来说,Bug率数值越小就说明越好,基于这个结果,会引导团队成员做出一些对长远整体效率无益行为,例如: 增大基数,增加无意义代码 把定长循环分开写,写成顺序方法 把可配置信息写死到代码...由于测试自动执行,所以不存在执行过程疏忽错误,完全取决于测试设计质量。一旦软件通过了强有力自动测试后,软件信任度自然会增加。...要么追求代码上数量,而实际没什么效果。 如果写个小工具,能辅助提高测试效率,算不算自动测试? 如果写个代码,能造一些测试数据,算不算上自动测试一部分?...而到了项目后期维护期,自动化再介入为回归测试做准备,可以最大化自动化收益。 推论3:自动程度自动化率 这里自动程度是指整个软件研发活动引入自动程度。...推论2说,有些项目早期可能不太适合高度自动化,但是项目早期仍然可以选定某些环节进行自动化。比如稳定公用接口,软件编译部署,环境搭建等从一开始就比较稳定部分。

    83631

    一文搞懂Spring5 Mock测试

    本文目的就是带大家学会在SpringBoot2.X项目中学会给自己开发服务类控制器类完成测试用例,方便项目维护同时也可以满足一些公司对提交代码必须有测试用例要求。...bean属性上,如若要测试使用真实bean则使用@Autowired或@Resource等自动装配注解 @SpyBean注解@MockBean注解作用类似,也是用来模拟一个bean;@SpyBean...WebFlux模式下(全部非阻塞IO、支持 Reactive Streams)控制器,通常@WebFluxTest注解用于测试单个控制器请求并与@MockBean联合使用;测试类上加上这个注解就会自动配置...MockitoBDDMockito类 Mockito类继承自ArgumentMatchers类,BDDMockito类又继承自Mockito ArgumentMatchers类常用方法 static...Spring5 Junit测试注解以及MockitoBDDMockito两个Mock类常用方法 写在最后 限于文章篇幅,本文就只讲解了Spring官网关于Spring5 Mock测试完成Junit

    2.8K20

    重学SpringBoot系列之Mockito测试

    重学SpringBoot系列之Mockito测试 mock中文文档 使用Mockito编码完成接口测试 编码实现接口测试 为什么要写代码做测试?...使用接口测试工具Postman很方便啊 因为在做系统自动化持续集成时候,会要求自动做单元测试,只有所有的单元测试都跑通了,才能打包构建。比如:使用maven在打包之前将所有的测试用例执行一遍。...这里重点是自动化,所以postman这种工具很难插入到持续集成自动化流程中去。 ---- junit测试框架 在开始书写测试代码之前,我们先回顾一下JUnit常用测试注解。...在junit4junit5,注解写法有些许变化。...Junit 5 Mockito框架,以下测试代码是基于Junit5,使用Junit4同学请自行调整代码。

    2.4K20

    SpringBoot之Web开发

    一、Web 开发 自动配置原理: xxxAutoConfiguration: 帮助我们给容器自动配置组件; xxxProperyties: 配置类来 1、 SpringBoot 对静态资源映射规则...; 效果:SpringMVC 自动配置和我们扩展配置都会起作用; ③、全面接管 SpringMVC; SpringBoot 对 SpringMVC 自动配置不需要了,所有都是我们自己配置;所有的...SpringMVC 自动配置都失效了 我们需要在配置类添加@EnableWebMvc 即可; // 使用WebMvcConfigurer可以来扩展SpringMVC功能 @Configuration...WebMvcConfiguration 只是 SpringMVC 最基本功能; 5、如何修改 SpringBoot 默认设置 模式: SpringBoot自动配置很多组件时候,先看容器中有没有自己配置...(@Bean、@Component)如果有就用户自己配置,如果没有,才自动配置自己默认组合起来; 在 SpringBoot 中国会有非常多 xxxConfigurer 帮助我们进行扩展配置 在 SpringBoot

    99710

    Spring学习笔记(十九)——springboot Web开发模板引擎thymeleaf语法使用

    xxx xxxxAutoConfiguration:帮我们给容器自动配置组件; xxxxProperties:配置类来封装配置文件内容; 2、SpringBoot对静态资源映射规则(自动配置);...对SpringMVC自动配置不需要了,所有都是我们自己配置;所有的SpringMVC自动配置都失效了 我们需要在配置类添加@EnableWebMvc即可; //使用WebMvcConfigurerAdapter...只是SpringMVC最基本功能; 5、如何修改SpringBoot默认配置 模式: ​ 1)、SpringBoot自动配置很多组件时候,先看容器中有没有用户自己配置(@Bean、@Component...)如果有就用用户配置,如果没有,才自动配置;如果有些组件可以有多个(ViewResolver)将用户配置自己默认组合起来; ​ 2)、在SpringBoot中会有非常多xxxConfigurer...帮助我们进行扩展配置 ​ 3)、在SpringBoot中会有很多xxxCustomizer帮助我们进行定制配置 6、RestfulCRUD 1)、默认访问首页 /* 在Spring 5.0 ,已经将

    81220

    SpringBoot单元测试(实例)

    SpringBoot单元测试实例 测试实例 1、创建基于Spring Data JPAWeb应用ch9_2 2、由于我springBoot是2.4.4,需要额外引入JUnit 3、配置数据库连接等基本属性...4、创建持久化实体类 5、创建数据访问层 6、创建控制器层 7、创建测试用例 7.1、创建基于@WebMvcTest测试用例 7.2、创建基于@SpringBootTest测试用例 8、运行...测试实例 这里我们分别使用@WebMvcTest@SpringBootTest两种方式测试一个控制器方法是否满足测试用例。...SQL语句 spring.jpa.show-sql=true #指定自动创建、更新数据库表等配置,update表示如果数据库存在持久化类对应表就不创建,不存在就创建对应表 spring.jpa.hibernate.ddl-auto...7.1、创建基于@WebMvcTest测试用例 使用@WebMvcTest注解测试Controller时,带有@Service以及别的注解组件类不会自动被扫描注册为Spring容器管理Bean。

    1.2K20

    Springboot使用MessageSource读取资源文件

    1、项目开发过程提示文字信息可以在资源文件中进行定义,而且资源文件是实现国际化技术主要手段。...如果想在SpringBoot里面进行资源文件配置,只需要做一些简单application.yml配置即可,而且所有注入资源文件都可以像最初Spring处理那样,直接使用MessageSource...,就可以通过MessageSource接口中提供getMessage()方法进行资源读取 23 map.put("springboot.url:", this.messageSource.getMessage...例如,本程序在src/main/resources/i18n目录又创建了Messages_zh_CN.propertiesMessages_en_US.properties(注意baseName名称相同...")); 33 return map; 34 } 35 36 } 注意:即使提供了不同语言资源文件,在SpringBoot也依然需要提供Messages.properties

    1.8K21

    如何写好单元测试:Mock脱离数据库+不使用@SpringBootTest「建议收藏」

    或者你项目使用了@Component注解(在SpringBoot项目启动时候就会跟着实例化/启动) 启动类上也定义了启动时就实例化类 这个@Component注解类里有多线程方法,随着启动类定义...我出现问题是:在我运行单元测试时候,代码里其他类多线程不停接收activeMQ消息,然后更新数据库对应数据。跟单元测试执行过程交叉重叠,导致单元测试失败。...其次,单元测试是只针对某一个类一个方法(一个小单元)来测,在测试过程,我们不要启动其它东西,要脱离项目中其它因素可能产生干扰。...它就是每次运行单元测试都很慢罪魁祸首,相信我,把它删掉你单元测试速度会快飞起。@SpringBootTest@Autowired一样,在单元测试里面是完全多余,根本就不搭边两个东西!...,会读取、解析一些项目配置文件,还会连接数据库,然后如果启动类又带有别的启动类、@Component、多线程等,在你执行单元测试时候,程序不止运行慢,时间长,而且由于多线程任务影响,就可能对你数据库造成了数据修改

    3.2K10

    如何使用Spring Boot轻松实现国际化本地化

    SpringBoot 国际化 SpringBoot也提供了国际化功能,在Spring Boot,国际化通常涉及以下几个关键组件: 资源文件(Properties文件):这些文件包含了不同语言文本消息...组件中使用文本消息:在应用程序界面代码,您可以使用特定消息代码来引用资源文件文本消息。Spring Boot会根据用户语言偏好选择合适消息进行显示。...通过配置MessageSourceLocaleResolver,以及在应用程序中使用相应消息代码,就可以实现Spring Boot国际化功能。 实践出真知 话不多说,上代码。...创建完文件idea会自动将国际化文件归类到Resource Bundle 修改配置文件 application.properties: # 国际化 # 默认名称,可以写多个,用逗号分隔 spring.messages.basename...总结 本文介绍了SpringBoot 国际化功能简单使用,通过在资源文件配置国际化字段,然后获取对应区域国际化信息。

    1.7K10

    springbootspringmvc

    : 角色清晰分离,每个角色——控制器、验证器、命令对象、表单对象、模型对象、DispatcherServlet、处理程序映射、视图解析器等等——都可以由专门对象来完成 框架作为javabean应用程序类强大而直接配置...可定制绑定验证 可定制映射处理视图解析 强大主题本地化解决特性 2 springboot springboot是一个强大实用工具,可以通过提供默认配置来快速设置应用程序,从而构建基于...2.2:springboot自动配置 -智能体系 springboot一个强大功能是它能够根据我们添加到类路径jar依赖项自动配置我们应用程序。...springboot自动配置是一个智能体系,它可以根据我们类路径配置jar为我们提供随时可用应用程序,例如,如果Spring Boot在类路径中找到HSQLDB,它将自动为我们配置内存数据库。...总结 在这篇文章,我们对springbootspringmvc进行了对比分析,我们了解到springbootspringmvc是完全不同,并且很好地相互补充,springboot提供了一个工具集

    64220

    一分钟上手SpringBootTest,单元测试如此简单

    本文主要讲述如何在SpringBoot框架上进行单元测试。也就是使用SpringBootTest进行单元测试。...,默认依赖版本是4.12 Spring Test 依赖: Spring 测试支持 AssertJ: 提供了流式断言方式 Hamcrest: 提供了丰富matcher Mockito: mock框架...@AutoConfigureMockMvc 注解是用于自动配置 MockMvc,加上这个注解之后就可以直接通过 @Autowired 注入 MockMvc @WebAppConfiguration 注解声明为集成测试加载...MockHttpServletRequest 类为了模拟HttpServletRequest 对象,可以通过它来设置请求头,这在需要鉴权接口测试十分实用。...):根据uri模板uri变量值得到一个GET请求方式RequestBuilder,如果在controller方法method选择是RequestMethod.GET,那在controllerTest

    1.9K40

    Java 国际化

    印度团队开了几次会扯皮,真服他们英语口语,想着来弄个国际化试试把 1. 国际化 当产品有多语言环境需求时,我们就需要为不同语言提供不同处理。...示例 展示没有 SpringBoot 集成使用方式 2.1 创建国际化文件 在 resources/i18n 下创建国际化文件,填入对应国际化信息,并在配置文件填入国际化文件路径方便统一管理...SpringBoot 集成 SpringBoot 集成了国际化,有自动化配置等处理,让我们使用更加方便快捷 3.1 国际化配置 下面是默认值可不设置,也可自行设置命名 server: port: 8080...,然后创建各种语言国际化文件,并放入 resource/i18n 下 3.3 使用 自动注入 MessageSource 类即可,然后根据 key 可以获取对应国际化信息 @RestController...自动加载 MessageSource 组件,组件内有 ResourceBundleMessageSource 来加载国际化资源 MessageSource 组件使用配置文件 MessageSourceProperties

    1.1K20
    领券