Dependency: GWTTestCase brings in net.sourceforge.htmlunit which brings in javax.servlet-api.
On Tuesday, 20 May 2025 at 10:25:12 am UTC+10 Craig Mitchell wrote: > I think GWTTestCase uses HtmlUnit ( https://htmlunit.sourceforge.io/ ), > so it doesn't need an embedded server running. > > Having said that, it looks like something still brings in the old > javax.servlet-api, so GWTTestCase can still use it. But my webserver still > uses the new jakarta.servlet-api: > > [image: Screenshot 2025-05-20 102243.png] > > On Tuesday, 20 May 2025 at 4:47:02 am UTC+10 Radek wrote: > >> Thank you for the reply - although I’m still a bit confused. You’re >> running GWTTestCase on an embedded server, right? As far as I understand, >> JUnitShell.java:1123 calls asSubclass(javax.servlet.Servlet.class), so it >> shouldn’t work with the Jakarta servlet API - >> https://github.com/gwtproject/gwt/blob/main/user/src/com/google/gwt/junit/JUnitShell.java#L1123. >> >> Are you starting Jetty (or another servlet container) yourself in your >> tests so that GWT servlets run there? Or are you not actually send GWT RPC >> in your GWTTestCase? >> >> Regards, >> Radek >> >> On Monday, May 19, 2025 at 1:34:31 AM UTC+2 Craig Mitchell wrote: >> >>> I'm using gwt-servlet-jakarta and GWTTestCase worked fine. I don't >>> think GWTTestCase has anything to do with which web server you use. >>> >>> It does use JUnit 4 though. It won't work with JUnit 5. >>> >>> On Monday, 19 May 2025 at 9:15:30 am UTC+10 Radek wrote: >>> >>>> Hi, >>>> >>>> Could you confirm that GWTTestCase only works if you’re still using the >>>> old javax.servlet API? It no longer works once you’ve migrated to Jakarta >>>> (e.g. Tomcat 10), right? >>>> >>>> Regards, >>>> Radek >>>> On Monday, May 12, 2025 at 3:32:52 PM UTC+2 Craig Mitchell wrote: >>>> >>>>> Thank you Thomas! The testArgs config worked perfectly. >>>>> >>>>> On Monday, 12 May 2025 at 5:41:37 pm UTC+10 Thomas Broyer wrote: >>>>> >>>>>> Use the gwt.args system property to pass arguments to GWT's >>>>>> JUnitShell: >>>>>> https://www.gwtproject.org/doc/latest/DevGuideTesting.html#passingTestArguments >>>>>> >>>>>> / >>>>>> https://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html >>>>>> <systemPropertyVariables> >>>>>> <gwt.args>-testMethodTimeout 10</gwt.args> >>>>>> </systemPropertyVariables> >>>>>> >>>>>> But with my maven plugin, you can also "just" use <testArgs> in the >>>>>> plugin configuration: >>>>>> https://tbroyer.github.io/gwt-maven-plugin/test-mojo.html#testArgs >>>>>> <testArgs> >>>>>> <arg>-testMethodTimeout</arg><arg>10</arg> >>>>>> </testArgs> >>>>>> >>>>>> On Sunday, May 11, 2025 at 6:29:29 AM UTC+2 ma...@craig-mitchell.com >>>>>> wrote: >>>>>> >>>>>>> If it helps, this is where it's setting the default timeout of 5 >>>>>>> minutes: >>>>>>> https://github.com/gwtproject/gwt/blob/main/user/src/com/google/gwt/junit/JUnitShell.java#L318 >>>>>>> >>>>>>> I'm just stuck on how to override it. >>>>>>> >>>>>>> Also, if I run mvn clean install gwt:test -pl *-client that seems >>>>>>> to run the tests (but it's easier to type mvn package 🙂) >>>>>>> >>>>>>> On Saturday, 10 May 2025 at 5:24:37 pm UTC+10 Craig Mitchell wrote: >>>>>>> >>>>>>>> (Sorry for the spamming) Now I am able to run my tests, I see they >>>>>>>> are rather slow, and they timeout with the message "Try increasing >>>>>>>> this timeout using the '-testMethodTimeout minutes' option". >>>>>>>> >>>>>>>> I'm running in Maven and trying to add this argument. I've tried >>>>>>>> putting it in the POM: >>>>>>>> <gwt.testMethodTimeout>10</gwt.testMethodTimeout> >>>>>>>> >>>>>>>> Also via the command line: >>>>>>>> mvn package "-DtestMethodTimeout=10" >>>>>>>> mvn package "-DtestMethodTimeout 10" >>>>>>>> >>>>>>>> It just keeps using the default of 5 minutes. Any idea how to set >>>>>>>> the timeout? >>>>>>>> >>>>>>>> On Saturday, 10 May 2025 at 4:58:07 pm UTC+10 Craig Mitchell wrote: >>>>>>>> >>>>>>>>> Apologies. Doing a mvn package does work. The tests run >>>>>>>>> successfully. Doing a mvn test does not work (gives the "*No >>>>>>>>> source code is available for type test.craig.FieldVerifier; did you >>>>>>>>> forget >>>>>>>>> to inherit a required module?"*" error). >>>>>>>>> >>>>>>>>> On Saturday, 10 May 2025 at 4:51:35 pm UTC+10 Craig Mitchell wrote: >>>>>>>>> >>>>>>>>>> Some extra (strange) behaviours: >>>>>>>>>> >>>>>>>>>> Creating a class in the client module: >>>>>>>>>> public class FieldVerifierOverride extends FieldVerifier { } >>>>>>>>>> >>>>>>>>>> And then calling the test with this class: >>>>>>>>>> assertTrue( FieldVerifierOverride.isValidName("hi") ); >>>>>>>>>> >>>>>>>>>> Gives a different error: >>>>>>>>>> [ERROR] Could not find test.craig.FieldVerifier in types compiled >>>>>>>>>> from source. Is the source glob too strict? >>>>>>>>>> >>>>>>>>>> Also, if I run mvn package (instead of mvn test), then the test >>>>>>>>>> actally runs, but FieldVerifier.isValidName("hi") returns false >>>>>>>>>> (it should return true): >>>>>>>>>> [ERROR] test.craig.MyTests.testSimple -- Time elapsed: 8.016 s >>>>>>>>>> <<< FAILURE! >>>>>>>>>> junit.framework.AssertionFailedError: expected: <true>, actual: >>>>>>>>>> <false> >>>>>>>>>> >>>>>>>>>> On Saturday, 10 May 2025 at 12:01:52 pm UTC+10 Craig Mitchell >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> In the GWTTestCase client tests, if I want to test code that's >>>>>>>>>>> in the shared module. Eg: >>>>>>>>>>> >>>>>>>>>>> assertTrue( FieldVerifier.isValidName("hi") ); >>>>>>>>>>> >>>>>>>>>>> I get the error: >>>>>>>>>>> [ERROR] Line 13: No source code is available for type >>>>>>>>>>> test.craig.FieldVerifier; did you forget to inherit a required >>>>>>>>>>> module? >>>>>>>>>>> >>>>>>>>>>> How can I inherit the shared module for the GWTTestCase tests? >>>>>>>>>>> >>>>>>>>>>> On Monday, 28 April 2025 at 9:26:13 am UTC+10 Craig Mitchell >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Thanks Colin. I wasn't aware of the "Suite" naming convention. >>>>>>>>>>>> >>>>>>>>>>>> So, to summarise. Either: >>>>>>>>>>>> - Put "Suite" or "SuiteNoBrowser" at the end of the test class >>>>>>>>>>>> name, or >>>>>>>>>>>> - Add the test class directly as an include in the client >>>>>>>>>>>> pom.xml, in the gwt-maven-plugin. >>>>>>>>>>>> >>>>>>>>>>>> Now working great! >>>>>>>>>>>> >>>>>>>>>>>> On Sunday, 27 April 2025 at 10:30:10 pm UTC+10 Colin Alworth >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> When using maven, running from the command line should be "mvn >>>>>>>>>>>>> test". With the plugin you are using, it is assumed you are using >>>>>>>>>>>>> a test >>>>>>>>>>>>> suite - this is not required, but scales better. If you only need >>>>>>>>>>>>> to run a >>>>>>>>>>>>> single test, you can modify this includes. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> https://tbroyer.github.io/gwt-maven-plugin/test-mojo.html#includes >>>>>>>>>>>>> >>>>>>>>>>>>> For example in your project with MyTests (note: that wouldn't >>>>>>>>>>>>> run even in a non-gwt project from maven, the default pattern is >>>>>>>>>>>>> *Test), >>>>>>>>>>>>> you could add this: >>>>>>>>>>>>> <includes> >>>>>>>>>>>>> <include>test/craig/MyTests.java</include> >>>>>>>>>>>>> </includes> >>>>>>>>>>>>> >>>>>>>>>>>>> When I do that, having built the sample as you describe, the >>>>>>>>>>>>> tests passes with mvn test: >>>>>>>>>>>>> [INFO] ------------------------------------------------------- >>>>>>>>>>>>> [INFO] T E S T S >>>>>>>>>>>>> [INFO] ------------------------------------------------------- >>>>>>>>>>>>> [INFO] Running test.craig.MyTests >>>>>>>>>>>>> [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time >>>>>>>>>>>>> elapsed: 13.96 s -- in test.craig.MyTests >>>>>>>>>>>>> [INFO] >>>>>>>>>>>>> [INFO] Results: >>>>>>>>>>>>> [INFO] >>>>>>>>>>>>> [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 >>>>>>>>>>>>> >>>>>>>>>>>>> When running from IJ, it doesnt automatically add sources to >>>>>>>>>>>>> the classpath as gwt:test does, so you may just want to call the >>>>>>>>>>>>> maven goal >>>>>>>>>>>>> directly instead. I recall that it is possible to configure >>>>>>>>>>>>> Maven/IJ to run >>>>>>>>>>>>> tests "normally", but can't quickly spot what that would be. >>>>>>>>>>>>> >>>>>>>>>>>>> On Sunday, April 27, 2025 at 12:18:17 AM UTC-5 >>>>>>>>>>>>> ma...@craig-mitchell.com wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> When running from the command line, I forgot to add all the >>>>>>>>>>>>>> items to the class path. Once I did that, I got the same error >>>>>>>>>>>>>> IntelliJ >>>>>>>>>>>>>> did: >>>>>>>>>>>>>> >>>>>>>>>>>>>> There was 1 error: >>>>>>>>>>>>>> 1) >>>>>>>>>>>>>> testSimple(test.craig.MyTests)com.google.gwt.junit.JUnitFatalLaunchException: >>>>>>>>>>>>>> >>>>>>>>>>>>>> The test class 'test.craig.MyTests' was not found in module ' >>>>>>>>>>>>>> test.craig.App'; no compilation unit for that type was seen >>>>>>>>>>>>>> at >>>>>>>>>>>>>> com.google.gwt.junit.JUnitShell.checkTestClassInCurrentModule(JUnitShell.java:741) >>>>>>>>>>>>>> at >>>>>>>>>>>>>> com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:1360) >>>>>>>>>>>>>> at >>>>>>>>>>>>>> com.google.gwt.junit.JUnitShell.runTestImpl(JUnitShell.java:1316) >>>>>>>>>>>>>> at >>>>>>>>>>>>>> com.google.gwt.junit.JUnitShell.runTest(JUnitShell.java:679) >>>>>>>>>>>>>> at >>>>>>>>>>>>>> com.google.gwt.junit.client.GWTTestCase.runTest(GWTTestCase.java:421) >>>>>>>>>>>>>> at >>>>>>>>>>>>>> com.google.gwt.junit.client.GWTTestCase.run(GWTTestCase.java:247) >>>>>>>>>>>>>> >>>>>>>>>>>>>> FAILURES!!! >>>>>>>>>>>>>> Tests run: 1, Failures: 0, Errors: 1 >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Sunday, 27 April 2025 at 2:54:36 pm UTC+10 Craig Mitchell >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> I created a demo project with >>>>>>>>>>>>>>> https://github.com/NaluKit/gwt-maven-springboot-archetype >>>>>>>>>>>>>>> with the params: >>>>>>>>>>>>>>> - modular-springboot-webapp >>>>>>>>>>>>>>> - groupId: test.craig >>>>>>>>>>>>>>> - artifactId: testing >>>>>>>>>>>>>>> - module-short-name app: tc >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Added JUnit to the client pom: >>>>>>>>>>>>>>> <dependency> >>>>>>>>>>>>>>> <groupId>junit</groupId> >>>>>>>>>>>>>>> <artifactId>junit</artifactId> >>>>>>>>>>>>>>> <version>4.13.2</version> >>>>>>>>>>>>>>> <scope>test</scope> >>>>>>>>>>>>>>> </dependency> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Created a simple test in the client module (in >>>>>>>>>>>>>>> src/test/java/test/craig/MyTests.java): >>>>>>>>>>>>>>> public class MyTests extends GWTTestCase { >>>>>>>>>>>>>>> @Override >>>>>>>>>>>>>>> public String getModuleName() { >>>>>>>>>>>>>>> return "test.craig.App"; >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> public void testSimple() { >>>>>>>>>>>>>>> assertTrue( true ); >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> } >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Tried to run it in IntelliJ, but got the error: >>>>>>>>>>>>>>> com.google.gwt.junit.JUnitFatalLaunchException: The test >>>>>>>>>>>>>>> class 'test.craig.MyTests' was not found in module ' >>>>>>>>>>>>>>> test.craig.App'; no compilation unit for that type was seen >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Tried to compile and run it from the command line: >>>>>>>>>>>>>>> java junit.textui.TestRunner test.craig.MyTests >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> But that returned: >>>>>>>>>>>>>>> Error: Could not find or load main class >>>>>>>>>>>>>>> junit.textui.TestRunner >>>>>>>>>>>>>>> Caused by: java.lang.ClassNotFoundException: >>>>>>>>>>>>>>> junit.textui.TestRunner >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I thought I was following the instructions in >>>>>>>>>>>>>>> https://www.gwtproject.org/doc/latest/DevGuideTesting.html >>>>>>>>>>>>>>> but obviously doing something wrong. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Any help is much appreciated. >>>>>>>>>>>>>>> >>>>>>>>>>>>>> -- You received this message because you are subscribed to the Google Groups "GWT Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/a3af39bc-6843-4148-baee-09b00e558500n%40googlegroups.com.