gpt4 book ai didi

java - 如何在spring test中动态设置环境变量

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:27 26 4
gpt4 key购买 nike

我正在尝试使用 spring-boot 运行 spring-test cases。我的测试类如下所示

@ContextConfiguration(initializers = TestContextInitializer.class)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {TestServiceApplication.class})

public class SampleTest {
@org.junit.Test
public void getContactsByName() throws Exception {
}

}

虽然我的配置类看起来像

public class TestContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
System.setProperty("DATA_DB_URL","some_url");
System.setProperty("DATA_DB_USER","some_user");
System.setProperty("DATA_DB_PASSWORD","some_password");
System.setProperty("DATA_DB_POOL_SIZE","2");
System.setProperty("DATA_DB_ROW_PREFETCH_SIZE","50");
}
}

一切正常,但我遇到了问题。作为我公司的政策,我不能在源代码中 checkin 密码。我怎样才能将密码外部化,这样我就不必 checkin 了。

最佳答案

只需使用环境变量。或者有 @PropertySource 注释用于使用不同的属性进行测试。

但另一方面,您真的不应该那样使用系统属性。系统属性是针对系统的,什么是操作系统、时间系统、语言等。它不应该与您的应用程序有任何关系。这也引入了全局共享状态。虽然如果您要开始并行运行测试,您可能不会这样做,但如果您在测试之间更改这些值,它们会偶尔中断。您可能会遇到其他问题,例如您需要 DATA_DB_USER 的属性对于 2 个不同的组件是不同的。

关于java - 如何在spring test中动态设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46304932/

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