Mocking System.getenv other than with powermock

Viewed 5164

Considering question https://stackoverflow.com/a/51980599/7203487. Only one method among methods in class contains System.getenv which needs to be mocked. Problem is I require to take jacoco code coverage which I get as 0% due to use of powemock. Is there a way possible to mock system and attain code coverage with or without powermock?

2 Answers

Have a look into the System Rules for JUnit 4, especially the EnvironmentVariables.

public class EnvironmentVariablesTest {

  @Rule
  public final EnvironmentVariables environmentVariables = new EnvironmentVariables();

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

Adding to @Roland Weisleder.

EnvironmnetVariables is not part of junit . you need to add below dependency

https://stefanbirkner.github.io/system-rules/download.html

<dependency>
  <groupId>com.github.stefanbirkner</groupId>
  <artifactId>system-rules</artifactId>
  <version>1.19.0</version>
  <scope>test</scope>
</dependency>
Related