当 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 ,我如何告诉我的测试加载测试属性?
提前谢谢您!
最佳答案
您可以在生产和测试模式的属性文件上使用具有相同名称的不同资源(src\main\java\resources 和 src\test\java\resources)。默认情况下,测试尝试使用 src\test\java\resources 中的属性,但如果找不到,则将使用 src\main\java\resources 中的属性。
在13 intelliji中,你可以在模块设置中标记testResources。
关于java - SpringJUnit4ClassRunner 中的 spring @Conditional,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22916118/