gpt4 book ai didi

java - SpringJUnit4ClassRunner 中的 spring @Conditional

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:40 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com