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