[ https://issues.apache.org/jira/browse/WICKET-7072?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17765684#comment-17765684 ]
Sam Peters commented on WICKET-7072: ------------------------------------ Thank you very much for your explaination. I see that moving the classes in question from _/src/main/java_ to _/src/test/java_ would result in a separate .jar to allow its further usage in user's test classes (with scope :test). I still try to understand your objection that all unit tests would then be available in the classpath (and thus as unit tests). As I can see, only two of the classes (namely ApacheLicenseHeaderTestCase.java and WellFormedXmlTestCase.java, both from wicket-util) contain annotations like @Test and @Before. All other classes, inclusive WicketTester, do not (they only call assert() or similar stuff within their methods and won't be executed by JUnit if I'm not wrong). Maybe one could consider to remove the method-based annotations like @Test from these two wicket classes and advice the users who are using them to add them in their own test classes (which is, in my opinion, the normal way of doing)? Maybe it would be a quite good point in time for introducing it since release 10 is still in progress, I'm not sure... Nevertheless, I'm curious if the required static approach would work as well. > JUnit code in /src/main/java breaks JPMS support in Eclipse IDE > --------------------------------------------------------------- > > Key: WICKET-7072 > URL: https://issues.apache.org/jira/browse/WICKET-7072 > Project: Wicket > Issue Type: Bug > Components: wicket-core > Affects Versions: 10.0.0-M1 > Reporter: Sam Peters > Priority: Major > > In Wicket 10, the wicket-core and wicket-util jars contain JUnit-related > code, see class list below. > The problem: > * When creating a new modular (JPMS) maven project by adding __ just > _org.apache.wicket.commons.fileupload_ ({_}not containing{_} JUnit code) in > {_}module-info{_}, projects run fine in Eclipse IDE (2023-06). I supplied a > quickstarter at > [https://github.com/gluser1357/jerseyissues/tree/main-without-junit-code], > see readme.txt. > * In contrast, when creating a new modular project by adding > {_}org.apache.wicket.util{_}" ({_}containing{_} JUnit code), Eclipse fails in > different ways, see wicket quickstarter at > [https://github.com/gluser1357/jerseyissues/tree/main-with-junit-code-error], > see readme.txt. > ** If JUnit is kept with usual _<scope>test<scope>_ (pom.xml) and not added > via _requires org.junit.jupiter.api_ in module-info.java, one of the > following errors occur when running code (see readme.txt for more details): > *** _java.lang.module.FindException: Module org.junit.jupiter.api not found, > required by org.apache.wicket.util_ > *** _java.lang.Error: Unresolved compilation problem: "The type > org.junit.jupiter.api.Test is not accessible"_ > *** _java.lang.IllegalAccessError: class > org.junit.platform.launcher.core.ServiceLoaderRegistry (in unnamed module > @0x5f341870) cannot access class > org.junit.platform.commons.logging.LoggerFactory (in module > org.junit.platform.commons) because module org.junit.platform.commons does > not export org.junit.platform.commons.logging to unnamed module @0x5f341870_ > > ** After correcting the missing module and dependency by removing > _<scope>test<scope>_ (pom.xml) and adding a _requires org.junit.jupiter.api_ > in module-info.java (which is, as far as I know, actually untypical), own > code in _/src/test/java_ and _/src/main/java_ runs now, but own JUnit tests > can still not be executed via "Run As JUnit Test" in Eclipse because of > *** _java.lang.IllegalAccessError: class > org.junit.platform.launcher.core.ServiceLoaderRegistry (in unnamed module > @0x5f341870) cannot access class > org.junit.platform.commons.logging.LoggerFactory (in module > org.junit.platform.commons) because module org.junit.platform.commons does > not export org.junit.platform.commons.logging to unnamed module @0x5f341870_ > > In my opinion, the JUnit-related code below shouldn't be contained in > _/src/main/java_ which is a) quite untypical and b) results in problems of > common IDEs like Eclipse. > *Would it be possible to* > * *move the related Wicket classes (see list below) out of > {_}/src/main/java{_}, e. g. to _/src/test/java_ and* > * *remove _requires org.junit.jupiter.api_ from both module-info?* > This would avoid these problems in Eclipse IDE for JPMS-based projects that > want to integrate Wicket. > ===== > The relevant classes are: > * in wicket-util: > ** > [https://github.com/apache/wicket/blob/rel/wicket-10.0.0-M1/wicket-util/src/main/java/org/apache/wicket/util/license/ApacheLicenseHeaderTestCase.java] > ** > [https://github.com/apache/wicket/blob/rel/wicket-10.0.0-M1/wicket-util/src/main/java/org/apache/wicket/util/markup/xhtml/WellFormedXmlTestCase.java] > * in wicket-core: > ** > [https://github.com/apache/wicket/blob/rel/wicket-10.0.0-M1/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java] > ** > [https://github.com/apache/wicket/blob/rel/wicket-10.0.0-M1/wicket-core/src/main/java/org/apache/wicket/util/tester/DiffUtil.java] > ** > [https://github.com/apache/wicket/blob/rel/wicket-10.0.0-M1/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java] > ** > [https://github.com/apache/wicket/blob/rel/wicket-10.0.0-M1/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTestCase.java] > ** > [https://github.com/apache/wicket/blob/rel/wicket-10.0.0-M1/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTester.java] > ** > [https://github.com/apache/wicket/blob/rel/wicket-10.0.0-M1/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterExtension.java] > ** > [https://github.com/apache/wicket/blob/rel/wicket-10.0.0-M1/wicket-core/src/main/java/org/apache/wicket/util/tester/WicketTesterHelper.java] > -- This message was sent by Atlassian Jira (v8.20.10#820010)