如何使用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