Может потребоваться увидеть код, но вы всегда можете сделать что-то вроде следующего.По сути, не вызывайте System.getenv(...)
напрямую, скрывайте это за вызовом метода, например ...
public class Func {
...
protected String getSetting(String setting) {
return System.getenv(setting);
}
...
public ? theFunction(...args...) {
String widgets = getSetting("widgets");
...
}
}
Для модульного тестирования вы можете переопределить getSetting
, например ...
public class FuncTest {
private Func classUnderTest;
private Map<String, String> overriddenSettings = new HashMap<>();
@Before
public void setup() {
classUnderTest = new Func() {
@Override
protected String getSetting(String setting) {
return overriddenSettings.get(setting);
}
};
}
@Test
public void shouldDoSomethingWhenThereAre10Widgets() {
overriddenSettings.put("widgets", "10");
classUnderTest.theFunction(...);
...
}
}
Вы также можете использовать PowerMock для моделирования метода System.getenv, но PowerMock может иногда создавать беспорядок, по моему мнению ...
Надеюсь, это поможет.