小编典典

如何使用 JUnit 测试依赖于环境变量的代码?

all

我有一段使用环境变量的 Java 代码,代码的行为取决于这个变量的值。我想用不同的环境变量值来测试这段代码。我怎样才能在 JUnit 中做到这一点?

我已经看到了一些在 Java中设置环境变量的方法,但我对它的单元测试方面更感兴趣,特别是考虑到测试不应该相互干扰。


阅读 90

收藏
2022-07-17

共1个答案

小编典典

System 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);
  }
}

对于 Java 5 到 7,库系统规则有一个名为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"));
  }
}

完全披露:我是这两个库的作者。

2022-07-17