[
https://issues.apache.org/jira/browse/SUREFIRE-1909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17390254#comment-17390254
]
Christian Kohlschütter commented on SUREFIRE-1909:
--------------------------------------------------
As far as I understand, Jigsaw mandates that there can only be _one_
module-info.java per package (which makes sense). Unsurprisingly, IDEs like
Eclipse concur and refuse adding a secondary file there.
I understand the document you refer to suggests that tests are to be moved to
their own test package; this may be non-desirable for a variety of reasons.
And, as far as it seems, surefire is totally fine keeping the tests in the same
package (that's because --{{add-exports}} is added), as is Junit 5 in Eclipse.
Just the combination of Junit 5 with Surefire doesn't work.
Can you reproduce using the attached project?
> 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
> Priority: Major
> Attachments: surefire-jpms-bug.tar.gz
>
>
> 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 bug is particularly bad because PMD now specifically complains about
> junit5 classes marked as public instead of package-private; see
> [https://pmd.github.io/2021/05/29/PMD-6.35.0/]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)