代码之家  ›  专栏  ›  技术社区  ›  Ashish

如何在spring测试中动态设置环境变量

  •  4
  • Ashish  · 技术社区  · 7 年前

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

    2 回复  |  直到 7 年前
        1
  •  2
  •   Derrops    7 年前

    只需使用环境变量。或者有 @PropertySource

    DATA_DB_USER

        2
  •  1
  •   glytching    6 年前

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

    例如:

    • export password=...; java -jar app.jar password 这将出现在您的春季环境中
    • java -Dpassword=... -jar app.jar
    • java -jar myapp.jar --password=... 设置一个命令行变量,该变量随后将出现在Spring环境中

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

    更多详细信息 in the docs .