diff --git a/src/main/java/org/mockito/internal/util/reflection/InstrumentationMemberAccessor.java b/src/main/java/org/mockito/internal/util/reflection/InstrumentationMemberAccessor.java index a8e1c26467..d1bfa4e809 100644 --- a/src/main/java/org/mockito/internal/util/reflection/InstrumentationMemberAccessor.java +++ b/src/main/java/org/mockito/internal/util/reflection/InstrumentationMemberAccessor.java @@ -95,6 +95,7 @@ class InstrumentationMemberAccessor implements MemberAccessor { INITIALIZATION_ERROR = throwable; } + @SuppressWarnings("unused") private final MethodHandle getModule, isOpen, redefineModule, privateLookupIn; InstrumentationMemberAccessor() { @@ -116,7 +117,7 @@ class InstrumentationMemberAccessor implements MemberAccessor { .findVirtual( module, "isOpen", - MethodType.methodType(boolean.class, String.class, module)); + MethodType.methodType(boolean.class, String.class)); redefineModule = MethodHandles.publicLookup() .findVirtual( @@ -330,9 +331,12 @@ public void set(Field field, Object target, Object value) throws IllegalAccessEx } private void assureOpen(Object module, String packageName) throws Throwable { - if (!(Boolean) - DISPATCHER.invokeWithArguments( - isOpen, module, packageName, DISPATCHER.getModule())) { + // It would be more reliable to check if a module's package already is opened to + // the dispatcher module from before. Unfortunately, there is no reliable check + // for doing so since the isOpen(String, Module) method always returns true + // if the second argument is an unnamed module. Therefore, for now, we need + // to reopen packages even if they are already opened to the dispatcher module. + if (!(Boolean) DISPATCHER.invokeWithArguments(isOpen, module, packageName)) { DISPATCHER.invokeWithArguments( redefineModule.bindTo(INSTRUMENTATION), module, diff --git a/subprojects/inline/inline.gradle b/subprojects/inline/inline.gradle index 22db17b067..1fc71c86b2 100644 --- a/subprojects/inline/inline.gradle +++ b/subprojects/inline/inline.gradle @@ -12,3 +12,7 @@ tasks.javadoc.enabled = false //required by the "StressTest.java" and "OneLinerStubStressTest.java" test.maxHeapSize = "256m" retryTest.maxHeapSize = "256m" + +test { + jvmArgs '--illegal-access=debug' +}