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

Spring-boot application-test.properties

轩辕煜
2023-03-14

我正在尝试使用JUnit对spring-boot应用程序进行单元测试。我已经将application-test.properties放置在src/test/resources下。我有一个ApplicationConfiguration类,它读取Application.Properties。

我的测试类如下所示

@RunWith(SpringRunner.class)
@SpringBootTest(classes=ApplicationConfiguration.class)
@TestPropertySource(locations = "classpath:application-test.properties")
@ActiveProfiles("test")
   public class TestBuilders {
      @Autowired
      private ApplicationConfiguration properties;

我的ApplicationConfiguration类如下所示

@Configuration
@ConfigurationProperties
@PropertySources({
    @PropertySource("classpath:application.properties"),
    @PropertySource(value="file:config.properties", ignoreResourceNotFound = 
        true)})
public class ApplicationConfiguration{
    private xxxxx;
    private yyyyy;

我尝试了谷歌上所有可能的方法…没运气。请救命!提前道谢。

共有1个答案

柯浩壤
2023-03-14

问题是您的测试类上没有@EnableConfigurationProperties
加载应用程序时,它从主类(其中有@SpringBootApplication)启动,在主类中可能有@EnableConfigurationProperties,因此它在启动应用程序时可以工作。
而当您只使用此处指定的ApplicationConfiguration类运行测试时

@SpringBootTest(classes=ApplicationConfiguration.class)

Spring不知道它必须启用配置属性,因此字段没有注入,因此为空。但是spring正在读取application-test.properties文件。这可以通过直接在测试类中注入值来确认

@Value("${xxxxx}")
private String xxxxx;

在这里注入值。但是要用ConfigurationProperties注入类,需要使用@enableConfigurationProperties启用类

@enableConfigurationProperties放在测试类上,所有事情都能正常工作。

 类似资料:
  • Spring是一个流行的Web框架,可以轻松集成许多常见的Web任务。 所以问题是,当我们拥有Struts2时,为什么我们需要Spring呢? 好吧,Spring不仅仅是一个MVC框架 - 它提供了很多Struts中没有的其他好东西。 例如:依赖注入可以对任何框架有用。 在本章中,我们将通过一个简单的示例来了解如何将Spring和Struts2集成在一起。 首先,您需要将以下文件添加到Spring

  • 作为一个新的Web应用程序项目的一部分,我计划学习Spring。我开始通读Spring框架参考。当我在谷歌上搜索时,我遇到了Spring boot。我所理解的是,Spring boot通过减少配置帮助构建应用程序的速度比Spring快得多。现在我有点困惑,我应该继续学习Spring还是跳转到Spring boot。我的目的是了解Spring作为一个框架是如何工作的,而不是一些特性。所以请让我知道,

  • 我正在研究Spring支持的数据访问技术,我注意到它提到了多个选项,但我不确定它们之间的区别: Spring-DAO(http://docs.spring.io/spring/docs/2.0.8/reference/dao.html) Spring-orm(http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/htm

  • 服务器应为无状态 不能期望客户端存储Cookie。 发送到服务器的凭据不应为纯文本 我是Spring Security的新手,因此如果我能在实现它时得到任何帮助,我将不胜感激。

  • 问题内容: 我正在启动一个新的JSF(2)项目。我意识到纯JSF有一定的局限性,我计划在春季停产。在春季,JSF是一种相对较新的方法(中甚至没有标记spring-faces :-)),jsp是经典方法。 我需要对技术堆栈进行最佳调整。 1)我也需要使用spring网流吗? 2)仅使用spring面(似乎是流的一部分)+spring mvc + JPA是否可行? 3)是否有这种配置的良好示例? 问题

  • 我正在尝试使用WebFlux转换以下方法,以避免在同一方法上使用@Async。 控制器类: startProcess(id)是一种通过webflux进行api调用并返回Mono类型的方法。我感兴趣的是,不管接下来发生什么,调用方都会立即收到ResponseStatus(HttpStatus.OK)。