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