4

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?

Gayathri
  • 1,776
  • 5
  • 23
  • 50

2 Answers2

8

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"));
  }
}
Roland Weisleder
  • 9,668
  • 7
  • 37
  • 59
2

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>
T D
  • 1,080
  • 2
  • 13
  • 20
  • He already added link for system rules. And answer is already accepted. – Gayathri Apr 24 '19 at 06:35
  • Thanks @T D .. I was thinking the Ronald code is inbuilt in junit.... I was looking for something in built in JUNIT.... Not everyone has luxury to add third party libraries..especially if you are working for someone else – Stunner Aug 16 '21 at 17:33