У подібній ситуації, як ця, коли мені довелося написати тестовий випадок, який залежить від змінної середовища , я спробував наступне:
- Я пішов на Системні правила, як запропонував Стефан Біркнер . Його використання було простим. Але раніше, ніж пізніше, я виявив поведінку помилковою. В одному пробігу він працює, в наступному запуску він не вдається. Я дослідив і виявив, що Системні правила добре працюють з версією JUnit 4 або вище. Але в моїх випадках я використовував кілька банок, які залежали від JUnit 3 . Тому я пропустив Системні правила . Більше про це ви можете знайти тут @ Анотація Rule не працює під час використання TestSuite в JUnit .
- Далі я спробував створити змінну середовища через клас Process Builder, що надається Java . Тут за допомогою Java Code ми можемо створити змінну середовища, але вам потрібно знати процес чи назву програми, яких я не робив. Також він створює змінну середовища для дочірнього процесу, а не для основного процесу.
Я витрачав день, використовуючи два вищевказані підходи, але безрезультатно. Потім Maven прийшов мені на допомогу. Ми можемо встановити змінні середовища або властивості системи через файл Maven POM, який, на мою думку, найкращий спосіб зробити тестування модулів для проекту на базі Maven . Нижче наведено запис, який я зробив у файлі POM .
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<PropertyName1>PropertyValue1</PropertyName1>
<PropertyName2>PropertyValue2</PropertyName2>
</systemPropertyVariables>
<environmentVariables>
<EnvironmentVariable1>EnvironmentVariableValue1</EnvironmentVariable1>
<EnvironmentVariable2>EnvironmentVariableValue2</EnvironmentVariable2>
</environmentVariables>
</configuration>
</plugin>
</plugins>
</build>
Після цієї зміни я знову запустив тестові справи і раптом усі спрацювали так, як очікувалося. Для отримання інформації читача, я досліджував цей підхід в Maven 3.x , тому я поняття не маю про Maven 2.x .