如何使用JUnit5模拟System.getenv()for Java17?

zfciruhq  于 2023-06-28  发布在  Java
关注(0)|答案(1)|浏览(147)

我在试着模仿System.getenv()。这就是我如何使用https://github.com/stefanbirkner/system-rules库:

@ExtendWith(MockitoExtension.class)
public class SampleTest {
   @Rule
   public final EnvironmentVariables environmentVariables = new EnvironmentVariables();
   @BeforeEach
   public void setup() {
       environmentVariables.set("AWS_REGION", TEST_REGION.toString());
       environmentVariables.set("CLIENT_ACCOUNT_ROLE", ROLE_ARN);
   }
   ...
}

但构建失败,出现异常:java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.Map java.util.Collections$UnmodifiableMap.m accessible: module java.base does not "opens java.util" to unnamed module。异常发生在environmentVariables.set("AWS_REGION", TEST_REGION.toString());行。
我在另一个注解https://github.com/junit-pioneer/junit-pioneer/issues/509中发现了类似的问题,但没有适当的解决方案。有没有一种方法可以模拟这个java和junit版本的变量?

相关问题