Christian Kohlschütter created SUREFIRE-1909:
------------------------------------------------
Summary: Support JUnit 5 reflection access by changing add-exports
to add-opens
Key: SUREFIRE-1909
URL: https://issues.apache.org/jira/browse/SUREFIRE-1909
Project: Maven Surefire
Issue Type: Bug
Components: JUnit 5.x support
Affects Versions: 3.0.0-M5
Reporter: Christian Kohlschütter
Testing JUnit 5 classes of a JPMS-enabled project with Surefire may fail if a
test class (or, for example, an abstract test base class) is not declared
"public". I'm seeing the following error:
{code:java}
java.lang.reflect.InaccessibleObjectException: Unable to make public static
void some.package.SomeClass.setupClass() throws java.io.IOException accessible:
module some.module does not "opens some.package" to unnamed module
@754ba872{code}
This could be fixed by adding the recommended "{{opens some.package}}" to the
project's module-info.java, however that is undesirable since it changes the
project's behavior beyond just unit testing. Adding a secondary "test-only"
module-info.java is also counterproductive since not all IDEs support this, and
these two files would have to be kept in sync, which is non-trivial.
An easy fix would be to change the "{{--add-exports}}" VM parameter that
surefire adds automatically to "{{--add-opens}}" in
{{maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ModularClasspathForkConfiguration.java}}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)