net.ltgt.gwt.maven and testing in multi-module project structure?

152 views
Skip to first unread message

Slava Imeshev

unread,
Jul 10, 2022, 12:03:14 AM7/10/22
to GWT Users
Hi folks,

I'm moving away from the 'classic' Maven GWT plugin to net.ltgt.gwt.maven by Thomas Broyer and I'm unclear to make client tests work. I created the project using

mvn archetype:generate    -DarchetypeGroupId=net.ltgt.gwt.archetypes    -DarchetypeVersion=LATEST    -DarchetypeArtifactId=modular-webapp

modular-webapp doesn't generate client/test, so I just added standard Maven structure using client/test/java, but those are not invoked.

https://tbroyer.github.io/gwt-maven-plugin/test-mojo.html speaks in terms of proect base directories instead of the client module. Quote:

${project.build.directory}/gwt-tests/deploy.

I got to be missing something obvious, but what is it?

TIA,

Slava

Thomas Broyer

unread,
Jul 10, 2022, 11:21:05 AM7/10/22
to GWT Users
On Sunday, July 10, 2022 at 6:03:14 AM UTC+2 ime...@gmail.com wrote:
Hi folks,

I'm moving away from the 'classic' Maven GWT plugin to net.ltgt.gwt.maven by Thomas Broyer and I'm unclear to make client tests work. I created the project using

mvn archetype:generate    -DarchetypeGroupId=net.ltgt.gwt.archetypes    -DarchetypeVersion=LATEST    -DarchetypeArtifactId=modular-webapp

modular-webapp doesn't generate client/test, so I just added standard Maven structure using client/test/java, but those are not invoked.

Do you have GWTTestSuite matching the default includes pattern?
If not, then either add one or change the includes to match your test classes (e.g. **/*Test.java, or the whole list from the default maven-surefire-plugin's value)
 

https://tbroyer.github.io/gwt-maven-plugin/test-mojo.html speaks in terms of proect base directories instead of the client module. Quote:

${project.build.directory}/gwt-tests/deploy.

Multi-modules in Maven are an after-thought, so $project always refers to the current module in a multi-module build. This means that ${project.build.directory} defaults to the target/ directory inside your client module.

Slava Imeshev

unread,
Jul 12, 2022, 9:06:37 PM7/12/22
to GWT Users
Thomas, 

Thank you, the setting the <include> did it.

My next question about testing is, what are the expectations for the test module? Are we still required to provide a separate JUnit.gwt.xml?

Slava

Thomas Broyer

unread,
Jul 13, 2022, 4:53:19 AM7/13/22
to GWT Users
On Wednesday, July 13, 2022 at 3:06:37 AM UTC+2 ime...@gmail.com wrote:
Thank you, the setting the <include> did it.

FYI, using a GWTTestSuite can improve performance (that's why it's the default in the plugin, because it favors best practices): https://www.gwtproject.org/doc/latest/DevGuideTesting.html#DevGuideJUnitSuites
 
My next question about testing is, what are the expectations for the test module? Are we still required to provide a separate JUnit.gwt.xml?

You've never been (or at least not for many many years) as GWT will synthesize a module that inherits both com.google.gwt.junit.JUnit and the module your GWTTestCase's getModuleName() returns.
The gwt-maven-plugin itself has no specific expectations either, so https://www.gwtproject.org/doc/latest/DevGuideTesting.html should apply as-is (I haven't re-read it though, but that's the goal of the plugin, to be a "thin" wrapper that only wires things that are specific to Maven, e.g. src/main/java, computing the classpath from dependencies, etc.)

Slava Imeshev

unread,
Aug 3, 2022, 8:47:43 PM8/3/22
to GWT Users
Continuing the journey, in this multi-module client/shared/server structure, is it possible to have the shared code in a package different from the client? 

I get 

"No source code is available for type com.effectiveem.app.gwt.shared.GapAnalysisLineItemVO; did you forget to inherit a required module?
[ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly"

The client sits in com.effectiveem.app.gwt.client.

Client's pom sets the module name to 

<moduleName>com.effectiveem.app.gwt.client.EemApp</moduleName>


Slava Imeshev

unread,
Aug 3, 2022, 8:49:06 PM8/3/22
to GWT Users
This error happens at the test time.

Michael Conrad

unread,
Aug 3, 2022, 9:46:35 PM8/3/22
to google-we...@googlegroups.com
Did you give the shared module a gwt.xml file? Did you inherit in the main project's gwt.xml the shared module's gwt.xml file?

--
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-tool...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit/64fe3efb-04f5-431a-b8e1-a56d83904246n%40googlegroups.com.

Slava Imeshev

unread,
Aug 4, 2022, 12:58:16 AM8/4/22
to google-we...@googlegroups.com
No and no. I’m following the structure generated by net.ltgt.gwt.maven’s 

mvn archetype:generate \
   -DarchetypeGroupId=net.ltgt.gwt.archetypes \
   -DarchetypeVersion=LATEST \
   -DarchetypeArtifactId=modular-webapp

That generates Maven’s client, shared and server modules. shared is not a GWT module in that structure. At any rate, I changed the module name to have the package name set as a super package of both client and shared and the compilation goes through. 

Now, while it compiles, the client module tests fail with to instantiate any custom widgets that are *below* the module package ‘com.effectiveem.app.gwt’. For example, 'com.effectiveem.app.gwt
.client'

[ERROR] testUpdateRowWithUnmodified(com.effectiveem.app.gwt.client.document.GapAnalysisItemListTableGWTTest)  Time elapsed: 0.032 s  <<< ERROR!
com.google.gwt.core.shared.SerializableThrowable: com.effectiveem.app.gwt.EemApp.JUnit:com.effectiveem.app.gwt.client.document.GapAnalysisItemListTableGWTTest.testUpdateRowWithUnmodified: could not instantiate the requested class
Caused by: com.google.gwt.core.shared.SerializableThrowable: (TypeError) : Cannot call method "new" of undefined

Obviously, I’m doing something wrong but I’m struggling to understand what.

Slava Imeshev



You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/lQkYCgjauEU/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-tool...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit/CAFHWztw1Wi7aHnR%2BxnjiZnO1r87d27i1BKfyJWK%2BGHm9mSwMfQ%40mail.gmail.com.

Slava Imeshev

unread,
Aug 4, 2022, 1:11:03 AM8/4/22
to GWT Users
Reply all
Reply to author
Forward
0 new messages