J'ai créé un test qui prolonge Gwtestcase mais je reçois cette erreur: gwttestmyfirstestescase.java est in / src / test / java, tandis que le module GWT est situé dans src / main / java. Je suppose que cela ne devrait pas être un problème. P> J'ai tout fait de tout ce qui est requis selon Voici le boîtier de test, situé dans / src / test / java / com / myproject / test / ui p> XXX PRE> Voici le module GWT que j'essaie de tester, situé dans SRC / MAIN / JAVA / COM / MYPROJECT / MAINMODULE.GWT.XML: P> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.1/distro-source/core/src/gwt-module.dtd">
<module>
<inherits name='com.myproject.Commons' />
<source path="site" />
<source path="com.myproject.test.ui" />
<set-property name="gwt.suppressNonStaticFinalFieldWarnings" value="true" />
<entry-point class='com.myproject.site.SiteModuleEntry' />
</module>
7 Réponses :
Je suis très confiant que cette erreur n'a rien à voir avec Maven Configuration. Ma première hypothèse serait que les tests ne sont pas sur le chemin de compilation GWT ... Je suppose que le code source problématique est: essayez de changer de: p> ou tout ce qui est le chemin approprié. p> p>
Le problème était que le test a été exécuté par Surefire au lieu du plug-in GWT-Maven. J'ai dû exclure explicitement mes tests GWT de Surefire Plugin:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <excludes> <exclude>**/*GwtTest*.java</exclude> <exclude>**/*Gwt*Suite*.java</exclude> </excludes> </configuration> </plugin>
Veuillez marquer une réponse comme étant la bonne, les questions peuvent donc être fermées.
Je ne pense pas que la bonne chose à faire est d'exclure les tests de votre cycle de vie maven. Quel est le point de les écraser? Ce que vous avez à faire est de configurer correctement le plug-in Maven-SureFire afin de le faire fonctionner.
Vous voyez, ce plugin utilise un chargeur de classe système pour rechercher les classes mais gwttestcase strong> a besoin d'un urlclassloader strong>. C'est la raison pour laquelle vous obtenez Veuillez noter le [avertir] aucune entrée de chemin source; Attendez-vous à des échecs ultérieurs code>. et le
classnotfoundexception de classe code>. Pas de soucis, cependant. Il est facile de dire à Maven d'utiliser un UrlClassloader à la place: P>
J'ai exclu les classes de test de Surefire Plugin parce que je n'utilise pas le plugin Surefire pour exécuter mes tests. J'utilise un plugin Maven GWT pour cela. J'ai essayé d'utiliser Surefire à un moment donné, mais sans succès. Peut-être que je vais essayer à nouveau d'utiliser Surefire, mais pour l'instant, je reste avec ma configuration actuelle. Merci quand même pour votre réponse.
Pour reproduire la solution utilisée par kevinwong depuis le Maven-GWT -plugin DOC , qui a fonctionné pour moi après avoir perdu plus d'une heure, essayez les autres solutions.
<plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.6</version> <configuration> <additionalClasspathElements> <additionalClasspathElement>${project.build.sourceDirectory}</additionalClasspathElement> <additionalClasspathElement>${project.build.testSourceDirectory}</additionalClasspathElement> </additionalClasspathElements> <useManifestOnlyJar>false</useManifestOnlyJar> <forkMode>always</forkMode> <systemProperties> <property> <name>gwt.args</name> <value>-out \${webAppDirectory}</value> </property> </systemProperties> </configuration> </plugin>
Cette configuration crée un dossier appelé \ $ {webappDirectory} code>. Mais ça ne marche pas si je le change à autre chose. Je ne sais même pas
Premièrement exclure les tests GWT à partir de puis configure Maven-Surefire-plugin Code>:
GWT-Maven-plugin Code>: P >
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>**/*GwtTest.java</includes>
<mode>htmlunit</mode>
</configuration>
</plugin>
Cela a fonctionné pour moi. J'ai des tests unitaires Junit et GWT et cela l'a travaillé.
la solution à cette erreur
war { // Exclude unneccessery GWT Compiler artifacts exclude "**/gwt-unitCache/**" } task widgetset << { // Create widgetset directory (if needed) def created = (new File(gwtBuildDir)).mkdirs() // Compile ant.java(classname: 'com.google.gwt.dev.Compiler', failOnError: 'yes', maxmemory: '1000m', fork: 'true') { classpath { pathElement(path: configurations.compile.asPath) pathElement(path: sourceSets.main.runtimeClasspath.asPath) sourceSets.main.java.srcDirs.each { pathelement(location: it.absolutePath) } } arg(line: '-war ' + gwtBuildDir) arg(line: '-logLevel INFO') arg(line: '-style OBF') arg(line: '-localWorkers 2') arg(line: widgetsetClass) // jvmarg(value: '-Djava.awt.headless=true') // jvmarg(value: '-XX:MaxPermSize=256M') // jvmarg(value: '-Xmx500M') } } // Require widgetset compilation before WAR is built war.dependsOn widgetset
Sans le contenu POM, etc. Il est difficile d'inviter ce que le problème ...
Exécutez des tests dans un processus séparé Voir ma réponse