当SpringJUnit4ClassRunner执行测试时,我需要在生产环境中加载测试属性。
我在我的spring上下文中使用@Conditional来定义测试/生产属性文件,例如:
@Configuration
public class ContextResource {
@Bean
@Conditional(TestApplicationConfiguration.class)
public static PropertySourcesPlaceholderConfigurer testProperties() {
PropertySourcesPlaceholderConfigurer placeholderConfigurer = new PropertySourcesPlaceholderConfigurer();
Resource [] resources = new Resource[] {
new ClassPathResource("properties/constants/constants-test.properties")
};
placeholderConfigurer.setLocations(resources);
return placeholderConfigurer;
}
@Bean
@Conditional(ProductionApplicationConfiguration.class)
public static PropertySourcesPlaceholderConfigurer productionProperties() {
PropertySourcesPlaceholderConfigurer placeholderConfigurer = new PropertySourcesPlaceholderConfigurer();
Resource [] resources = new Resource[] {
new ClassPathResource("properties/constants/constants.properties")
};
placeholderConfigurer.setLocations(resources);
return placeholderConfigurer;
}
我也在使用
进行测试@RunWith(SpringJUnit4ClassRunner.class)
当 ProductionApplicationConfiguration.class 返回false时, constants-test.properties 正在加载并且它是正常的,但是如何告诉我的测试加载测试属性即使 ProductionApplicationConfiguration.class 返回 true ?
提前谢谢!
答案 0 :(得分:1)
您可以在属性文件上使用具有相同名称的不同资源(src \ main \ java \ resources和src \ test \ java \ resources)进行生产和测试模式。默认情况下,测试尝试使用src \ test \ java \ resources中的属性,但如果找不到,则使用src \ main \ java \ resources中的属性。
在<13> intelliji中,您可以在模块设置中标记testResources。