[ 
https://issues.apache.org/jira/browse/SUREFIRE-1909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17366928#comment-17366928
 ] 

Christian Kohlschütter commented on SUREFIRE-1909:
--------------------------------------------------

Hi Tibor, I've attached a project that exposes the bug. Just run with "mvn 
test".

As I said above, changing "add-exports" to "add-opens" in that class fixes it.

Here's the relevant output from "mvn -X test"

 
{code:java}
[DEBUG] Determined Maven Process ID 15092
[DEBUG] Fork Channel [1] connection string 'pipe://1' for the implementation 
class org.apache.maven.plugin.surefire.extensions.LegacyForkChannel
[DEBUG] boot classpath: 
.m2/repository/org/apache/maven/surefire/surefire-booter/3.0.0-M5/surefire-booter-3.0.0-M5.jar
 
.m2/repository/org/apache/maven/surefire/surefire-api/3.0.0-M5/surefire-api-3.0.0-M5.jar
 
.m2/repository/org/apache/maven/surefire/surefire-logger-api/3.0.0-M5/surefire-logger-api-3.0.0-M5.jar
 
.m2/repository/org/apache/maven/surefire/surefire-shared-utils/3.0.0-M4/surefire-shared-utils-3.0.0-M4.jar
 
.m2/repository/org/apache/maven/surefire/surefire-extensions-spi/3.0.0-M5/surefire-extensions-spi-3.0.0-M5.jar
 workspace/surefire-jpms-bug/target/test-classes 
.m2/repository/org/junit/jupiter/junit-jupiter/5.7.1/junit-jupiter-5.7.1.jar 
.m2/repository/org/junit/jupiter/junit-jupiter-api/5.7.1/junit-jupiter-api-5.7.1.jar
 .m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar 
.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar 
.m2/repository/org/junit/platform/junit-platform-commons/1.7.1/junit-platform-commons-1.7.1.jar
 
.m2/repository/org/junit/jupiter/junit-jupiter-params/5.7.1/junit-jupiter-params-5.7.1.jar
 
.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.7.1/junit-jupiter-engine-5.7.1.jar
 
.m2/repository/org/junit/platform/junit-platform-engine/1.7.1/junit-platform-engine-1.7.1.jar
 
.m2/repository/org/apache/maven/surefire/surefire-junit-platform/3.0.0-M5/surefire-junit-platform-3.0.0-M5.jar
 
.m2/repository/org/apache/maven/surefire/common-java5/3.0.0-M5/common-java5-3.0.0-M5.jar
 
.m2/repository/org/junit/platform/junit-platform-launcher/1.7.1/junit-platform-launcher-1.7.1.jar
[DEBUG] boot(compact) classpath: surefire-booter-3.0.0-M5.jar 
surefire-api-3.0.0-M5.jar surefire-logger-api-3.0.0-M5.jar 
surefire-shared-utils-3.0.0-M4.jar surefire-extensions-spi-3.0.0-M5.jar 
test-classes junit-jupiter-5.7.1.jar junit-jupiter-api-5.7.1.jar 
apiguardian-api-1.1.0.jar opentest4j-1.2.0.jar junit-platform-commons-1.7.1.jar 
junit-jupiter-params-5.7.1.jar junit-jupiter-engine-5.7.1.jar 
junit-platform-engine-1.7.1.jar surefire-junit-platform-3.0.0-M5.jar 
common-java5-3.0.0-M5.jar junit-platform-launcher-1.7.1.jar
[DEBUG] Path to args file: 
workspace/surefire-jpms-bug/target/surefire/surefireargs12553641456609995297
[DEBUG] args file content:
--module-path
"workspace/surefire-jpms-bug/target/classes"
--class-path
".m2/repository/org/apache/maven/surefire/surefire-booter/3.0.0-M5/surefire-booter-3.0.0-M5.jar:.m2/repository/org/apache/maven/surefire/surefire-api/3.0.0-M5/surefire-api-3.0.0-M5.jar:.m2/repository/org/apache/maven/surefire/surefire-logger-api/3.0.0-M5/surefire-logger-api-3.0.0-M5.jar:.m2/repository/org/apache/maven/surefire/surefire-shared-utils/3.0.0-M4/surefire-shared-utils-3.0.0-M4.jar:.m2/repository/org/apache/maven/surefire/surefire-extensions-spi/3.0.0-M5/surefire-extensions-spi-3.0.0-M5.jar:workspace/surefire-jpms-bug/target/test-classes:.m2/repository/org/junit/jupiter/junit-jupiter/5.7.1/junit-jupiter-5.7.1.jar:.m2/repository/org/junit/jupiter/junit-jupiter-api/5.7.1/junit-jupiter-api-5.7.1.jar:.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:.m2/repository/org/junit/platform/junit-platform-commons/1.7.1/junit-platform-commons-1.7.1.jar:.m2/repository/org/junit/jupiter/junit-jupiter-params/5.7.1/junit-jupiter-params-5.7.1.jar:.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.7.1/junit-jupiter-engine-5.7.1.jar:.m2/repository/org/junit/platform/junit-platform-engine/1.7.1/junit-platform-engine-1.7.1.jar:.m2/repository/org/apache/maven/surefire/surefire-junit-platform/3.0.0-M5/surefire-junit-platform-3.0.0-M5.jar:.m2/repository/org/apache/maven/surefire/common-java5/3.0.0-M5/common-java5-3.0.0-M5.jar:.m2/repository/org/junit/platform/junit-platform-launcher/1.7.1/junit-platform-launcher-1.7.1.jar"
--patch-module
surefire.jpms.bug="workspace/surefire-jpms-bug/target/test-classes"
--add-exports
surefire.jpms.bug/surefire.test=ALL-UNNAMED
--add-modules
surefire.jpms.bug
--add-reads
surefire.jpms.bug=ALL-UNNAMED
org.apache.maven.surefire.booter.ForkedBooter
[DEBUG] Forking command line: /bin/sh -c cd workspace/surefire-jpms-bug && 
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/java 
@workspace/surefire-jpms-bug/target/surefire/surefireargs12553641456609995297 
workspace/surefire-jpms-bug/target/surefire 2021-06-21T18-41-15_153-jvmRun1 
surefire8660924379138157795tmp surefire_015925150141917337177tmp
[DEBUG] Fork Channel [1] connected to the client.
[INFO] Running surefire.test.JupiterTest
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.058 s 
<<< FAILURE! - in surefire.test.JupiterTest
[ERROR] surefire.test.JupiterTest.test Time elapsed: 0.013 s <<< ERROR!
java.lang.reflect.InaccessibleObjectException: Unable to make 
surefire.test.JupiterTest() accessible: module surefire.jpms.bug does not 
"opens surefire.test" to unnamed module @17a7f733
[DEBUG] Closing the fork 1 after saying GoodBye.
[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Errors: 
[ERROR] JupiterTest.test » InaccessibleObject Unable to make 
surefire.test.JupiterTest...
[INFO] 
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.070 s
[INFO] Finished at: 2021-06-21T18:41:17-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test (default-test) on 
project surefire-jpms-bug: There are test failures.
[ERROR] 
[ERROR] Please refer to workspace/surefire-jpms-bug/target/surefire-reports for 
the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, 
[date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal 
org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test (default-test) on 
project surefire-jpms-bug: There are test failures.
Please refer to workspace/surefire-jpms-bug/target/surefire-reports for the 
individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump 
and [date].dumpstream.
 at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:215)
 at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:156)
 at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:148)
 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:117)
 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:81)
 at 
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
 (SingleThreadedBuilder.java:56)
 at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
(LifecycleStarter.java:128)
 at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
 at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
 at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
 at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
 at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
 at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:62)
 at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke (Method.java:566)
 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
(Launcher.java:282)
 at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
(Launcher.java:406)
 at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.MojoFailureException: There are test 
failures.
Please refer to workspace/surefire-jpms-bug/target/surefire-reports for the 
individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump 
and [date].dumpstream.
 at org.apache.maven.plugin.surefire.SurefireHelper.throwException 
(SurefireHelper.java:271)
 at org.apache.maven.plugin.surefire.SurefireHelper.reportExecution 
(SurefireHelper.java:159)
 at org.apache.maven.plugin.surefire.SurefirePlugin.handleSummary 
(SurefirePlugin.java:453)
 at 
org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked
 (AbstractSurefireMojo.java:1175)
 at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute 
(AbstractSurefireMojo.java:932)
 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
(DefaultBuildPluginManager.java:137)
 at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:210)
 at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:156)
 at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:148)
 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:117)
 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:81)
 at 
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
 (SingleThreadedBuilder.java:56)
 at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
(LifecycleStarter.java:128)
 at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
 at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
 at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
 at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
 at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
 at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:62)
 at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke (Method.java:566)
 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
(Launcher.java:282)
 at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
(Launcher.java:406)
 at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please 
read the following articles:
[ERROR] [Help 1] 
http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
{code}
 

> 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 message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to