1. ホーム
  2. java

[解決済み] JUnitを使用して環境変数に依存するコードをテストする方法は?

2022-04-20 20:33:09

質問

私は、環境変数を使用するJavaコードの一部を持っており、コードの動作はこの変数の値に依存します。私は、環境変数の異なる値でこのコードをテストしたいと思います。JUnitでこれを行うにはどうすればよいですか?

私が見たのは Javaで環境変数を設定するいくつかの方法 しかし、私は、特にテストが互いに干渉すべきではないことを考えると、それのユニットテストの側面にもっと興味があります。

どのように解決するのですか?

ライブラリ システムLambda はメソッド withEnvironmentVariables を使用して環境変数を設定します。

import static com.github.stefanbirkner.systemlambda.SystemLambda.*;

public void EnvironmentVariablesTest {
  @Test
  public void setEnvironmentVariable() {
    String value = withEnvironmentVariable("name", "value")
      .execute(() -> System.getenv("name"));
    assertEquals("value", value);
  }
}

Java5~7では、ライブラリ システムルール というJUnitルールがあります。 EnvironmentVariables .

import org.junit.contrib.java.lang.system.EnvironmentVariables;

public class EnvironmentVariablesTest {
  @Rule
  public final EnvironmentVariables environmentVariables
    = new EnvironmentVariables();

  @Test
  public void setEnvironmentVariable() {
    environmentVariables.set("name", "value");
    assertEquals("value", System.getenv("name"));
  }
}

完全な開示:私は両方のライブラリの作者です。