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 [email protected] >>>>>> 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 >>>>>>>>>>>>> [email protected] 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 [email protected]. To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/a3af39bc-6843-4148-baee-09b00e558500n%40googlegroups.com.
