当我使用时:
@ContextConfiguration(classes = { DmiVehicleRTExportConfig.class },
initializers = ConfigFileApplicationContextInitializer.class)
我的集成测试失败的属性如下:
${oauth2client.prematureTimeout:600}
未获得600的默认值。
这是通过使用:SpringApplicationConfiguration
解决的,但我想使用ConfigFileApplicationContextInitializer.class
代替SpringApplicationConfiguration
。
感谢。
答案 0 :(得分:3)
我有同样的问题。需要添加PropertySourcesPlaceholderConfigurer.class
:
@ContextConfiguration(classes = { DmiVehicleRTExportConfig.class,
PropertySourcesPlaceholderConfigurer.class },
initializers = ConfigFileApplicationContextInitializer.class)
Spring团队刚刚添加了一条关于此的说明:
单独使用ConfigFileApplicationContextInitializer不会为@Value(" $ {...}")注入提供支持。它唯一的工作是确保将application.properties文件加载到Spring的环境中。对于@Value支持,您需要另外配置PropertySourcesPlaceholderConfigurer或使用@SpringBootTest,其中一个将自动为您配置。
答案 1 :(得分:0)
在使用
时,我在JUnit测试中遇到了这个问题@SpringApplicationConfiguration
我通过添加一个带有静态void main()'的类来解决这个问题。配置类的方法:
@Configuration
public class SpringEmptyApplication{
public static void main(String[] args) {
SpringApplication.run(SpringBootEmptyApplication.class);
}
}
我把这个类放在配置类列表中,如
@SpringApplicationConfiguration(classes = {
SpringBootEmptyApplication.class,
DmiVehicleRTExportConfig.class
})
这对我来说非常适合。
如果你想避免
@SpringApplicationConfiguration
你可以尝试
@ContextConfiguration(loader = SpringApplicationContextLoader.class ...
这是@SpringApplicationConfiguration本身如何注释,可能是这个加载器可以修复问题,没试过......