Spring не имеет ничего общего с переменными окружения.Он может читать их, но, насколько я знаю, ничего не говорит, в отличие от системных свойств.
Переменные среды должны существовать в среде.
Итак, у вас есть следующие опции:
Опция 1
Использовать Power Mock, который позволяет имитировать вызовы статических методов.Эта библиотека не является частью Spring, поэтому вы можете просто использовать ее в области тестирования, чтобы она не влияла на производство (jar powermock не будет в списке зависимостей для производства)
Вариант 2
Оберните статические вызовы каким-то внешним классом, а затем смоделируйте его с помощью обычной среды моделирования / или загрузите другой бин того же интерфейса, так как вы все равно используете Spring Test.Код будет выглядеть примерно так:
interface EnvAccessor {
String getValue(String envVarName);
}
public class MyEnvAccessor {
String getValue(String envVarName) {
return System.getenv(envVarName);
}
}
Опция 3
Ничего не делать в рабочем коде, но установить программную переменную env до запуска теста JUnit:
public class SampleTest {
@BeforeClass
public static void setupEnvironment() {
// set the environment here
}
}
Теперь настройка среды из теста в частности и из кода Java в целом очень сложна, поскольку переменные среды не должны изменяться программно.
Вы можете прочитать Здесь о возможных обходных путях и оценке их в вашей программе.