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/0eca973a-9054-4893-a8fa-c8d9e2b49e8fn%40googlegroups.com.

Reply via email to