Spring boot 在使用org.springframework.boot.test.context.SpringBootTest时,是否有一种推送环境变量的方法?

Spring boot 在使用org.springframework.boot.test.context.SpringBootTest时,是否有一种推送环境变量的方法?,spring-boot,spring-boot-test,Spring Boot,Spring Boot Test,我有一门考试课: import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class ThisTestClass { @Test void contextLoads() {} } 当contextLoads()时,会触发一段代码,如下所示 private String envVar = System.getenv("EN

我有一门考试课:

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest
class ThisTestClass {

@Test
void contextLoads() {}

}
当contextLoads()时,会触发一段代码,如下所示

private String envVar = System.getenv("ENV_VAR");
它返回null,这会干扰我的测试,因此我需要一种方法在执行此测试之前的某个时间点推送环境变量。通过IDE环境设置或控制台执行此操作不是一个选项,因为jenkins也将执行此操作

我试过:

import org.springframework.test.context.TestPropertySource;
@TestPropertySource(properties = {"ENV_VAR = some_var"})

如果运气不好,有什么想法吗?

两者都应该有效

  • 通过静态初始化设置环境变量
  • 通过属性设置环境变量
@SpringBootTest(属性={“bar=foo”,“foobar=foobar”})
类SoTestEnvironment Variables应用程序测试{
静止的{
系统设置属性(“foo”、“bar”);
}
@自连线环境;
@试验
void loadEnvironmentVariables(){
assertNotNull(环境);
assertEquals(“bar”,environment.getProperty(“foo”);
assertEquals(“foo”,environment.getProperty(“bar”);
assertEquals(“foobar”,environment.getProperty(“foobar”);
}
}
两者都应该起作用

  • 通过静态初始化设置环境变量
  • 通过属性设置环境变量
@SpringBootTest(属性={“bar=foo”,“foobar=foobar”})
类SoTestEnvironment Variables应用程序测试{
静止的{
系统设置属性(“foo”、“bar”);
}
@自连线环境;
@试验
void loadEnvironmentVariables(){
assertNotNull(环境);
assertEquals(“bar”,environment.getProperty(“foo”);
assertEquals(“foo”,environment.getProperty(“bar”);
assertEquals(“foobar”,environment.getProperty(“foobar”);
}
}

这是否回答了您的问题?嘿,不,TestPropertySource也不起作用。我写完问题后就试着这么做了。目前我考虑的唯一策略是停止使用System.GetEnv。这是否回答了您的问题?嘿,不,TestPropertySource也不起作用。我写完问题后就试着这么做了。现在我考虑的唯一策略是停止使用System.getenvHey Dirk,谢谢你的回答。它不起作用了,还是一样error@FacundoLaxalde上面的代码正在工作,我面临着同样的问题
System.getenv(“ENV_VAR”)
不同于
environment.getProperty(“ENV_VAR”)
嘿,德克,谢谢你的回答。它不起作用了,还是一样error@FacundoLaxalde上面的代码正在工作,我面临着同样的问题
System.getenv(“ENV_VAR”)
不同于
environment.getProperty(“ENV_VAR”)
    static {
    System.setProperty("ENV_VAR", "some_var");
    }