小编典典

Spring Boot应用程序test.properties

spring-boot

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

我的测试课看起来像这样

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

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

我的ApplicationConfiguration类看起来像这样

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

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


阅读 1002

收藏
2020-05-30

共1个答案

小编典典

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

@SpringBootTest(classes=ApplicationConfiguration.class)

Spring不知道它必须启用配置属性,因此这些字段不会注入,因此为null。但是spring正在读你的application- test.properties文件。只需将值直接注入测试类即可确认

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

在此注入值。但是要注入一个类中,ConfigurationProperties您需要使用@EnableConfigurationProperties

@EnableConfigurationProperties你的测试类和everythhing工作正常。

2020-05-30