我有一个配置属性实例,前缀为" assets。"
@Configuration
@ConfigurationProperties( prefix = "assets", ignoreUnknownFields = true )
public class AssetsProperties
{
@NotNull
private Resource file;
public Resource getFile()
{
return file;
}
public void setFile( Resource file )
{
this.file = file;
}
}
其默认配置定义如下:
@Configuration
@PropertySource( name = "assetsConfig", value = "classpath:com/package/boot/web/ui/assets/config/default-assets-config.properties" )
@Order( LOW_ORDER )
public class AssetsConfig
{
}
default-assets-config.properties包含:
assets.file=classpath:assets.json
在我的单元测试中,我想使用:
覆盖默认值@TestPropertySource( locations = "classpath:com/package/boot/web/ui/assets/tests/assets-config.properties" )
assets-config.properties包含
assets.file=classpath:com/package/boot/web/ui/assets/tests/assets.json
不幸的是,这个值永远不会注入AssetsProperties。 我做错了什么,我不明白,因为spring fmk ref doc says
测试属性源的优先级高于从操作系统环境或Java系统属性加载的属性源,以及应用程序通过@PropertySource或以编程方式声明性地添加的属性源。
提前致谢,
Paskos
答案 0 :(得分:7)
您点击了limitation in Spring Boot,这意味着它会忽略使用@TestPropertySource
配置的属性文件。作为替代方案,您可以改为配置一个或多个内联属性:
@TestPropertySource(properties = "assets.file=classpath:com/package/boot/web/ui/assets/tests/assets.json")