Spring-启动应用程序-test.properties

Spring-boot application-test.properties

我正在尝试使用 junit 对 spring-boot 应用程序进行单元测试。我已将应用程序-test.properties 放在src/test/resources 下。我有一个 ApplicationConfiguration Class 读取 application.properties.

我的测试class看起来像这样

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

当我尝试读取属性时,它始终为空。

我的 ApplicationConfiguration Class 看起来像这样

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

我尝试了在 google 上找到的所有可能的方法。没有运气。请帮忙! 提前致谢。

问题是您的测试 @EnableConfigurationProperties class。
当您加载应用程序时,它从您可能有 @EnableConfigurationProperties 的主 class(一个有 @SpringBootApplication)开始,因此它在您启动应用程序时工作。
而当您是 运行 测试时,只有 ApplicationConfiguration class 正如您在此处指定的那样

@SpringBootTest(classes=ApplicationConfiguration.class)

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

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

这里注入了值。但是要使用 ConfigurationProperties 注入 class 您需要使用 @EnableConfigurationProperties

启用它

@EnableConfigurationProperties 加入测试 class,一切正常。