简体   繁体   English

在SpringJUnit4ClassRunner中使用spring @Conditional

[英]spring @Conditional in SpringJUnit4ClassRunner

I need to load test properties in production environment when tests is performing by SpringJUnit4ClassRunner. 当SpringJUnit4ClassRunner执行测试时,我需要在生产环境中加载测试属性。

I'm using @Conditional in my spring context to define test/production properties files, like: 我在春季上下文中使用@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;
}

Also i'm using test with 我也在用测试

@RunWith(SpringJUnit4ClassRunner.class)

When ProductionApplicationConfiguration.class returned false, constants-test.properties is loading and it's normal, but how can I tell my tests to load test properties even if ProductionApplicationConfiguration.class returned true ? ProductionApplicationConfiguration.class返回false时, constants-test.properties正在加载,这是正常现象,但是即使ProductionApplicationConfiguration.class返回true,我如何告诉我的测试加载测试属性?

Thank you in advance! 先感谢您!

You may use different resource (src\\main\\java\\resources and src\\test\\java\\resources) with same names on property files for production and test mode. 您可以在属性文件上使用具有相同名称的不同资源(src \\ main \\ java \\ resources和src \\ test \\ java \\ resources)用于生产和测试模式。 By default, tests try use property from src\\test\\java\\resources, but if they don't find it, then they will use property from src\\main\\java\\resources. 默认情况下,测试会尝试使用src \\ test \\ java \\ resources中的属性,但是如果找不到,则将使用src \\ main \\ java \\ resources中的属性。

in 13 intelliji you can mark testResources in module setting. 在13种语言中,您可以在模块设置中标记testResources。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM