java - SpringJUnit4ClassRunner 中的 spring @Conditional

标签 java spring junit

当 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/

相关文章:

java - 如果添加新分区,会丢失 Kafka Streams 中的消息吗?

java - 验证 JUnit 中的具体异常详细信息

eclipse - 如何终止 Eclipse 中已进入无限循环的 JUnit 测试运行

java - Java Rest API 初始化数据的最佳方法是什么?

java - 有哪些方法可以测试依赖于静态方法的方法?

Java 将对象追加到 JSON

java - 如何在maven pom.xml文件中找到需要依赖的java类

java - 将对象添加到 ArrayList 中不会出现错误

spring - tomcat7 maven 插件无法访问 src/main/resources 中的资源?

java.lang.NoClassDefFoundError : javax/websocket/ClientEndpointConfig$Configurator from StandardWebsocketClient 错误