当前位置: 首页 > 知识库问答 >
问题:

解析JUnit测试中的Spring@Value表达式

陈和裕
2023-03-14
@Component
public class Bean {

    @Value("${bean.timeout:60}")
    private Integer timeout;

    // ...
}

现在我想用JUnit测试来测试这个bean。因此,我使用了SpringJUnit4ClassRunner和ContextConfiguration注释。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class BeanTest {

    @Autowired
    private Bean bean;

    // tests ...

    @Configuration
    public static class SpringConfiguration {
        @Bean
        public Bean bean() {
            return new Bean();
        }
    }
}

不幸的是,SpringJUnit4ClassRunner无法解析@value表达式,即使提供了默认值(抛出了NumberFormatException)。运行者似乎甚至无法解析表达式。

我的测验漏了什么吗?

共有1个答案

云和同
2023-03-14

您的测试@configuration类缺少PropertyPlaceHolderConfigureer的实例,这就是Spring不知道如何解析这些表达式的原因;在SpringConfiguration类中添加如下所示的bean

@org.springframework.context.annotation.Bean
public static PropertyPlaceholderConfigurer propertyPlaceholderConfigurer() {
    PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
    ppc.setIgnoreResourceNotFound(true);
    return ppc;
}

并将其移到一个单独的类中使用

@ContextConfiguration(classes=SpringConfiguration.class)

以便在运行测试时更加具体。

 类似资料:
  • 问题内容: 我要对Spring-boot进行Junit测试,如下所示: 和ApplicationTest.java这样 和我的POM像这样: 运行测试时,出现以下错误信息 但是当我将此应用程序作为普通Java应用程序运行时 运行良好! 它出什么问题了 ?我应该如何通过Spring-boot进行junit测试?非常感谢! 问题答案: 您需要添加 @PropertySource(“ classpath

  • 和ApplicationTest.java 我的POM是这样的: 当我运行测试时,我得到以下错误信息 但当我将此应用程序作为普通Java应用程序运行时 它工作得很好! 怎么了?我应该如何用Spring-Boot参加junit测试?多谢!

  • 有一个@Value注释的常量,在运行测试时不会初始化,当构造函数中需要它时,它会抛出NullPointerException。 要测试的示例类: 示例测试类: 事情尝试了,但没有任何效果: 我已经创建了应用程序。具有所需值的属性文件 创建应用程序测试。属性,并添加了TestPropertySource(locations=“classpath:application test.properties

  • 与许多Java应用程序一样,我们在应用程序中使用Freemarker来呈现电子邮件。我们发现我们的一些模板并没有像我们想象的那样呈现,因此我们意识到我们应该为模板呈现编写一些单元测试。我设置了测试,并立即收到一个FileNotFoundException:找不到模板“my/Template.ftl”。 我想这一定是一个既能解决问题又能轻松解决的问题。那是很多小时前的事了,我意识到我错了;据我所知,

  • 我需要jUnit测试的帮助,我的结果是json文件,我需要测试该文件的长度,问题是在jsonPath函数中没有这样的方法。 这里是我的测试方法,预期长度是7。如有任何帮助,我将不胜感激,谢谢

  • 本文向大家介绍详解Spring Boot Junit单元测试,包括了详解Spring Boot Junit单元测试的使用技巧和注意事项,需要的朋友参考一下 Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性。 凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半。 刚好前段时间写了一些关于SpringBoo