编程语言
首页 > 编程语言> > java – 如何在spring test中动态设置环境变量

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

作者:互联网

我正试图用spring-boot运行弹簧测试案例.我的测试类如下所示

@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");
    }
}

一切都很好,但我有问题.我无法在源代码中签入PASSWORD作为我的公司政策.如何外部化密码,以便我不必检查密码.

解决方法:

您可以在运行时通过系统或环境或命令行变量提供密码(或任何Spring属性).所有这些源都是(a)在运行时定义,(b)在代码库外部.

例如:

> export password = …; java -jar app.jar设置一个名为password的环境变量,该变量将出现在Spring环境中
> java -Dpassword = … -jar app.jar设置一个JVM系统参数,该参数将出现在Spring环境中
> java -jar myapp.jar –password = …设置一个命令行变量,该变量将出现在Spring环境中

您甚至可以从JNDI获取属性.

更多细节in the docs.

标签:java,spring-mvc,spring,spring-boot-2,spring-boot-test
来源: https://codeday.me/bug/20190705/1390365.html