Я пытаюсь создать модульный тест, однако всякий раз, когда я запускаю его, я сталкиваюсь с null
значениями в моих переменных. Отладка проблемы указывает на то, что мои переменные окружения не используются глобально в моем модульном тесте. Как class
я тестирую вызовы другого класса, который затем ссылается на его значения из переменной окружения. Как использовать глобальные переменные среды в IntelliJ?
Я уже добавил переменные среды в конфигурацию теста следующим образом: ![](https://i.stack.imgur.com/dCGjo.png)
Однако, похоже, это не так использоваться на всем проекте. Следовательно, классы, вызывающие переменные этой среды, возвращают нуль. Как мне сделать мой модульный тест и классы, которые он вызывает, для использования глобально объявленных переменных среды? ТИА. Ниже приведен фрагмент моего кода того, как мои переменные окружения используются в классе
@Value("${fintech.clientid}")
private String clientId;
@Value("${fintech.secret}")
private String clientSecret;
@Value("${digifi-host}")
private String fintechHost;
@Value("${fintech-digifi-login-endpoint}")
private String loginUrl;
@Value("${fintech-single-session-endpoint}")
private String singleSessionUrl;
. Это происходит из класса, он вызывает значения, хранящиеся в моем файле application.properties. А из файла application.properties он пытается найти правильные значения в переменных среды, объявленных во время выполнения.
So from Java Class > application.properties file/config > Runtime Environment Variables
Ниже приведен скриншот переменных с нулевыми значениями при отладке теста. Как видите, все значения равны нулю, что означает, что он не загружал переменные среды, которые я поместил в модульном тесте. В другом тестовом примере, где у меня было временное исправление (как я указал здесь в ответе), они заполняются и, следовательно, корректно загружают переменные среды, но во многих других моих тестовых случаях, подобных этому, это не так.
![enter image description here](https://i.stack.imgur.com/t9mK3.png)
PS: я уже нашел соответствующие статьи в stackoverflow, но все они относятся к классу тестирования c, и в нем используются верные плагины или настройка переменные окружения или через pom, но мне не нужно, чтобы они были там, поскольку для нас требуется использовать переменные окружения во время выполнения, так как значения переменных должны быть скрыты и не видны в коде. Мне просто нужно, чтобы весь проект использовал глобальную переменную среды, когда он выполняет свой модульный тест. Очень похоже на то, как мой проект будет использовать переменные окружения, которые я установил в IDE в обычном режиме.
Только для справки. Я уже сделал ff.:
A.
@ClassRule
public final static EnvironmentVariables environmentVariables = new EnvironmentVariables().set("property1", "value1");
B.
@ContextConfiguration(locations = "classpath:application.properties")
public class LoginServiceTest {
...
}
C.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<environmentVariables>
<SERVER_PORT>8082</SERVER_PORT>
</environmentVariables>
</configuration>
</plugin>
D.
@TestPropertySource(properties = {"property1=value1","property2=value2",})
public class LoginServiceTest {
...
}
E.
public class LoginServiceTest {
static{
System.setProperty("property1", "value1");
System.setProperty("property2", "value2");
...
}