[ https://issues.apache.org/jira/browse/SUREFIRE-1765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17071706#comment-17071706 ]
Tom De Wolf commented on SUREFIRE-1765: --------------------------------------- [~tibordigana] When I run the build mvn -X test then the current situation is : {code:java} [DEBUG] test(compact) classpath: test-classes junit-jupiter-5.6.1.jar junit-jupiter-api-5.6.1.jar apiguardian-api-1.1.0.jar opentest4j-1.2.0.jar junit-platform-commons-1.6.1.jar junit-jupiter-params-5.6.1.jar junit-jupiter-engine-5.6.1.jar junit-platform-engine-1.6.1.jar [DEBUG] test(compact) modulepath: classes {code} Now I tested the following scenarios: * unit test that does not call the isAnnotationPresent which would fail the test, i.e. normal modular unit test behaviour without the jdk bug ** mvn -X test runs fine ** when I then copy the exact command line that is executed and remove the 'test-classes' from the classpath manually *** then the test still runs fine *** so this indicates that +adding test-classes to the classpath is not necessary when the test is a modulepath test+ --> best to then not add it on classpath * unit test that does call the isAnnotationPresent which would fail the test ** mvn -X test runs but fails on jdk bug ** when I then copy the exact command line that is executed and remove the 'test-classes' from the classpath manually *** then it still fails, so it would not be a workaround for the jdk bug – is apparently the case with any module-info.class on the classpath – needs to be fixed in https://bugs.openjdk.java.net/browse/JDK-8241770. *** when I move everything to the module path (so no classpath) and add module surefire.booter as module then I bump into a +split package problem between surefire.api and surefire.junit.platform+ --> can this be fixed? **** {code:java} Error occurred during initialization of boot layer java.lang.module.ResolutionException: Module surefire.junit.platform contains package org.apache.maven.surefire.util.internal, module surefire.api exports package org.apache.maven.surefire.util.internal to surefire.junit.platform{code} So looking at the above, the bug needs to be fixed in the jdk, but 2 fixes for surefire are underlined above which can be tackled in this issue? > target/test-classes should not be added to classpath when tests run on > modulepath using patch-module > ---------------------------------------------------------------------------------------------------- > > Key: SUREFIRE-1765 > URL: https://issues.apache.org/jira/browse/SUREFIRE-1765 > Project: Maven Surefire > Issue Type: Bug > Affects Versions: 2.22.1, 2.22.2 > Reporter: Tom De Wolf > Priority: Major > Attachments: reproduce-xxxAnnotation-jdk-bug.zip > > > When running junit tests using the maven-surefire-plugin the > target/test-classes are added as first entry in the classpath. > However, when testing a explicit java module with a module-info.java the > test-classes are already part of the module path using --patch-module. So > they should not be on the classpath? > In some scenario's this can give unwanted side-effects, i.e. that the same > classes are on the modulepath and classpath, possibly with a > module-info.class in both locations (cfr > [https://bugs.openjdk.java.net/browse/JDK-8241770).] > So it seems that it is best that target/test-classes is only added to the > classpath when it is not put on the module-path. -- This message was sent by Atlassian Jira (v8.3.4#803005)