gpt4 book ai didi

java - 在测试用例中定义 spring active profile

转载 作者:搜寻专家 更新时间:2023-11-01 01:16:58 25 4
gpt4 key购买 nike

使用 Spring 4,我有以下测试设置:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = JpaConfig.class)
@ActiveProfiles(resolver = TestResolver.class)
public class SimpleTest {

TestResolver 已实现为:

public class TestResolver implements ActiveProfilesResolver {
@Override
public String[] resolve(Class<?> aClass) {
String[] profiles = new String[1];
profiles[0] = "test";
return profiles;
}
}

JpaConfig 已使用 PropertySource 注释

@Configuration
@PropertySource("classpath:properties/application-${spring.profiles.active:dev}.properties")
@EnableJpaRepositories(basePackages={"com.my.namespace.repositories"})
public class JpaConfig {

每当我运行 SimpleTest 时,它都会尝试定位:properties/application-dev.properties,而我希望它是 properties/application-test.properties。

我在这里尝试完成的是基于以下帖子:Spring integration tests with profile

最佳答案

我相信this实际上,这是您面临的问题。在那same post你有 Dave Syer 的解释和其他用户的可能解决方案。按照 Dave 的建议,这可能是 ApplicationContextInitializer 的实现:

public class MyApplicationContextInitializer implements
ApplicationContextInitializer<GenericApplicationContext> {

public void initialize(GenericApplicationContext context) {
context.getEnvironment().getSystemProperties().put(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "some_profile");
}

在你的测试课上:

@ContextConfiguration(classes = JpaConfig.class, initializers = MyApplicationContextInitializer.class)

但我要说的是,该 SO 帖子中建议的方法(为不同的配置文件加载不同的 .properties 文件)是一种更优雅的方法。

关于java - 在测试用例中定义 spring active profile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23213869/

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