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

我有一段使用环境变量的Java代码,代码的行为取决于此变量的值。我想用不同的环境变量值测试此代码。如何在JUnit中做到这一点?

我已经大致了解了一些在Java中设置环境变量的方法,但我对它的单元测试方面更感兴趣,尤其是考虑到测试之间不应相互干扰。

回答:

库系统Lambda具有withEnvironmentVariables设置环境变量的方法。

public void EnvironmentVariablesTest {

@Test

public void setEnvironmentVariable() {

String value = withEnvironmentVariable("name", "value")

.execute(() -> System.getenv("name"));

assertEquals("value", value);

}

}

对于Java 5至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"));

}

}

完全公开:我是两个库的作者。

以上是 如何使用JUnit测试依赖于环境变量的代码? 的全部内容, 来源链接: utcz.com/qa/418578.html

回到顶部