Spring Boot应用程序test.properties

我正在尝试使用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上找到的所有可能方法。请帮忙!提前致谢。

回答:

问题是您没有@EnableConfigurationProperties参加测试班。

加载应用程序时,它从@SpringBootApplication可能有的主类(其中有个)@EnableConfigurationProperties开始,因此在启动应用程序时可以工作。

而当您仅ApplicationConfiguration在此处指定的类 上运行Test时

@SpringBootTest(classes=ApplicationConfiguration.class)

Spring不知道它必须启用配置属性,因此这些字段不会注入,因此为null。但是spring正在读你的application-

test.properties文件。只需将值直接注入测试类即可确认

@Value("${xxxxx}")

private String xxxxx;

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

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

以上是 Spring Boot应用程序test.properties 的全部内容, 来源链接: utcz.com/qa/430122.html

回到顶部