lundi 9 février 2015

How to override config value from @PropertySource used in a @ConfigurationProperties config class in a unit test using @TestPropertySource

I have a config properties instance with prefix "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;
}
}


Its default configuration is defined in:



@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 contains:



assets.file=classpath:assets.json


In my unit test I want to override the default value using:



@TestPropertySource( locations = "classpath:com/package/boot/web/ui/assets/tests/assets-config.properties" )


assets-config.properties contains



assets.file=classpath:com/package/boot/web/ui/assets/tests/assets.json


Unfortunately this value is never injected into AssetsProperties. What do I do wrong, I don't understand because spring fmk ref doc says



Test property sources have higher precedence than those loaded from the operating system’s environment or Java system properties as well as property sources added by the application declaratively via @PropertySource or programmatically.



Thanks in advance,


Paskos


Aucun commentaire:

Enregistrer un commentaire