google-code-export / gwt-test-utils

Automatically exported from code.google.com/p/gwt-test-utils
1 stars 0 forks source link

Test unitaire java.lang.ExceptionInInitializerError (WEB-INF/gwt-test-utils.properties' : unknown value 'class-modifier' #36

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Bonjour,
Lorsque je lance mon test unitaire j'obtiens l'erreur:
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: com.octo.gwt.test.exceptions.GwtTestConfigurationException: Error in 
'/C:/Users/frankjean/workspace/GwtTestUtils/war/WEB-INF/classes/META-INF/gwt-tes
t-utils.properties' : unknown value 'class-modifier'
    at com.octo.gwt.test.internal.ConfigurationLoader.process(ConfigurationLoader.java:222)
    at com.octo.gwt.test.internal.ConfigurationLoader.readFiles(ConfigurationLoader.java:271)
    at com.octo.gwt.test.internal.ConfigurationLoader.<init>(ConfigurationLoader.java:84)
    at com.octo.gwt.test.internal.ConfigurationLoader.createInstance(ConfigurationLoader.java:47)
    at com.octo.gwt.test.internal.GwtClassLoader.<init>(GwtClassLoader.java:77)
    at com.octo.gwt.test.internal.GwtClassLoader.<clinit>(GwtClassLoader.java:39).

Mon fichier de proprieté est bien chargé mais je ne sais pas quelle valeur, 
il faut mettre.

J'ai repris à partir du site qui se trouve à l url : 

http://code.google.com/p/gwt-test-utils/source/browse/src/framework/trunk/gwt-te
st-utils/src/main/resources/META-INF/gwt-test-utils.properties?spec=svn710&r=710
.

Merci de votre aide

Original issue reported on code.google.com by frankje...@gmail.com on 3 May 2011 at 9:36

GoogleCodeExporter commented 9 years ago
la révision 710 est obsolète, 'class-modifier' n'est plus une clé valide.

Dans votre fichier META-INF/gwt-test-utils.properties, vous ne devriez avoir 
qu'une seule entrée :

com/masociete/monprojet/monFichierGWT.gwt.xml = module-file

Cette entrée permet de déclarer le chemin d'accès dans le classpath de test 
vers le module GWT a testé. Si vous possédez plusieurs modules GWT dans votre 
application, vous pouvez déclarer plusieurs clés "module-file".

Original comment by gael.laz...@gmail.com on 3 May 2011 at 12:52

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Bonjour 
Merci de votre réponse si vite.

Au niveau de mon fichier de propriété voici mon nouveau fichier de proprieté.

Je n'ai que une seule ligne qui est celle ci:

com/test/gwtTestUtils/GwtTestUtils.gwt.xml = module-file

Dois je modifier le fichier GwtTestUtils.gwt.xml ?

Je demande ceci car j obtiens cette erreur lorsque je lance mon test unitaire.

java.lang.ExceptionInInitializerError
    at com.octo.gwt.test.GwtRunnerBase.<init>(GwtRunnerBase.java:34)
    at com.octo.gwt.test.GwtRunner.<init>(GwtRunner.java:25)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: com.octo.gwt.test.exceptions.GwtTestPatchException: 
java.lang.ArrayStoreException: 
sun.reflect.annotation.TypeNotPresentExceptionProxy
    at com.octo.gwt.test.internal.GwtClassLoader.<clinit>(GwtClassLoader.java:44)
    ... 20 more
Caused by: java.lang.ArrayStoreException: 
sun.reflect.annotation.TypeNotPresentExceptionProxy

Merci de votre aide

Original comment by frankje...@gmail.com on 3 May 2011 at 1:52

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago

J ai oublié de préciser que ma classe de test contient la method :
    @Override
    public String getModuleName() {

        return "module-file";
    }

J utilise le dernier jar du disponible uploader le 2 mai 
(gwt-test-utils-0.28-20110502.091625-9)

Original comment by frankje...@gmail.com on 3 May 2011 at 2:21

GoogleCodeExporter commented 9 years ago
Il y a un problème dans votre configuration, qui peut s'expliquer par 
l'absence ttemporaire de documentation pour faire fonctionner la version 
0.28-SNAPSHOT.

Vous n'avez pas à réutiliser les fichier gwt-test-utils.properties présents 
dans le framework, mais à créer le votre dans votre classpath de test.

Voici donc un exemple complet qui pourra vous aider :

avec  l'application GWT suivante :

- com.mycompany.myapp
    + MyGwtModule.gwt.xml
- com.mycompany.myapp.client
- com.mycompany.myapp.server
- com.mycompany.myapp.shared

1) Votre fichier META-INF/gwt-test-utils.properties doit déclarer votre 
fichier de configuration MyGwtModule.gwt.xml :

com/mycompany/myapp/MyGwtModule.gwt.xml = module-file

=> module file déclare le chemin relatif vers votre fichier de conf dans le 
classpath de test.

2) dans votre classe de test (qui étend GwtTest) :

 de test contient la method :
    @Override
    public String getModuleName() {

        return "com.mycompagny.myapp. MyGwtModule";
    }

=> Le nom qualifié de votre module, sans
l'extension ".gwt.xml"

3) lancez vos tests. Il se peut que vous rencontriez une dernière erreur de 
configuration gwt-test-utils si le framework n'arrive pas à retrouver votre 
hostpage HTML. Dans ce cas, il faudra overrider la methode protected 
"getHostPageRelativePath(String moduleName)" de GwtTest (de mémoire) pour 
indiquer le path vers le fichier html du module GWT testé (même logique que 
pour 'module-file')

Toute ces explications  seront mises à dispostion dans la doc officielle du 
framework lors de la release de la 0.28.

Original comment by gael.laz...@gmail.com on 4 May 2011 at 6:34

GoogleCodeExporter commented 9 years ago
Je vous remercie enormement pour votre réactivité.

Au niveau de mon repertoire de test j'ai créé un repertoire META-INF où j'ai 
deposé mon fichier gwt-test-utils.properties.

Mon fichier de propriété contient uniquement cette valeur:
com/test/gwtTestUtils/GwtTestUtils.gwt.xml = module-file

Dans ma classe de test j'ai modifier la valeur de retour de la method 
getModuleName.

Voici la method:

@Override
    public String getModuleName() {

        return "com.test.gwtTestUtils.GwtTestUtils";
    }

J'ai toujours l erreur de configuration.

Par contre je n'ai pas overrider la methode protected de 
getHostPageRelativePath car je n'ai pas bien commpris ce qu'il faut mettre 
dedans.

Je vous remercie enormement pour votre réactivité.

Merci

Original comment by frankje...@gmail.com on 4 May 2011 at 12:57

GoogleCodeExporter commented 9 years ago
Pouvez-vous joindre votre fichier GwtTestUtils.gwt.xml ?

Pour la méthode à overrider : 
protected String getHostPagePath(String moduleFullQualifiedName),

il faut retourner le chemin vers le fichier HTML utilisé par votre module GWT.

Exemple :

 @Override
  protected String getHostPagePath(String moduleName) {
    return "com/octo/gwt/test/demo/public/index.html";
  }

Original comment by gael.laz...@gmail.com on 4 May 2011 at 1:50

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Bonjour,
Vous trouverez en piece jointe mon fichier GwtTestUtils.gwt.xml

Original comment by frankje...@gmail.com on 4 May 2011 at 2:00

Attachments:

GoogleCodeExporter commented 9 years ago
Il n'y a rien à signaler dans le fichier.. Pourriez-vous donc m'envoyer 
l'ensemble de votre projet car je ne comprends pas où est le problème..

Original comment by gael.laz...@gmail.com on 4 May 2011 at 2:04

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Bonjour,

Pouvez-vous me donner quelques informations, expliquant les raisons du 
problèmes.

Est ce que le problème vient de ma part?

Je vous remercie encore.

Original comment by frankje...@gmail.com on 5 May 2011 at 9:02

GoogleCodeExporter commented 9 years ago
J'ai finalement réussi à exécuter les tests avec votre application.

Dans votre cas, il faut overrider les méthodes de GwtTest Comme ceci :

  @Override
  public String getModuleName() {
    return "com.test.gwtTestUtils.GwtTestUtils";
  }

  @Override
  protected String getHostPagePath(String moduleName) {
    return "war/GwtTestUtils.html";
  }

=> getHostPagePath donne le chemin vers le fichier HTML qui sera manipulé par 
GWT.

A noter :

    // ensure label is empty
    Assert.assertEquals("", label.getText());

au lieu de 

    Assert.assertEquals(null, label.getText());

Vous avez mélanger gwt-test-utils-0.28-SNAPSHOT avec gwt-test-utils-csv-0.27 
etc. Il faut utiliser les mêmes versions de tous les modules gwt-test-utils, 
donc tout en 0.28-SNAPSHOT.

Le test passe ensuite au vert :-)

Original comment by gael.laz...@gmail.com on 5 May 2011 at 12:27

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Il manque encore des dépendances dans le classpath

- htmlparser-1.6.jar (http://htmlparser.sourceforge.net/)

Comme vous avez inclus gwt-test-utils-gxt jar, il faudra également ajouter 
gwt-css-selector-0.28-SNAPSHOT.jar. Vous pouvez le télécharger ici 
http://forge.octo.com/nexus/content/repositories/snapshots/se/fishtank/gwt-css-s
electors/

Je vais changer le package "se.fishtank" par "com.octo.gwt.test" pour que les 
jars soient centralisées en un unique endroit.

Enfin, il faut ajouter un seul des deux module spring, soit 
"gwt-test-utils-spring2", soit "gwt-test-utils-spring3". Mais pas les deux ;-)

tout est détaillé ici :

http://code.google.com/p/gwt-test-utils/wiki/HowToUse#Without_Maven

Original comment by gael.laz...@gmail.com on 5 May 2011 at 1:44

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Egalement sur windows 7, SP1

Si le problème persiste, essayez dans un premier temps d'enlever 
gwt-test-utils-gxt et gwt-test-utils-spring2/3 du classpath.

Original comment by gael.laz...@gmail.com on 5 May 2011 at 2:03

GoogleCodeExporter commented 9 years ago
Les Tests unitaires passent après avoir enlevé gwt-test-utils-gxt et 
gwt-test-utils-spring3.

Je vous remercie enormement.

Mais par curiosité si j enleve ces deux jar (spring 3 et gwt-test-utils) et 
que les TU fonctionnent, est ce que ca signifie qu'il y a une incompatibilité 
avec ce deux jars et les autres jar du framework.

Merci de votre reponse

Original comment by frankje...@gmail.com on 5 May 2011 at 2:21

GoogleCodeExporter commented 9 years ago
Non, c'est surement qu'il vous manque une dépendance tierce.

Essayez d'ajouter spring3 : normalement le test passe.

Ensuite, ajoutez gwt-test-utils-gxt, qui requiert

- gxt-2.2.jar ou supérieur
- gwt-css-selector-0.28-SNAPSHOT.jar

Je pense que c'est une de ces deux dépendances qu'il vous manque.

Original comment by gael.laz...@gmail.com on 5 May 2011 at 2:29

GoogleCodeExporter commented 9 years ago
Avez vous valider l'utilisation de gwt-test-utils-gxt avec les dépendances 
gxt-2.2.jar et gwt-css-selector-x.jar ?

J'ai modifié le groupId de gwt-css-selector, vous trouverez le jar au même 
endroit que ceux de gwt-test-utils :

http://forge.octo.com/nexus/content/repositories/snapshots/com/octo/gwt/test/

A noter également qu'avec la dernière 0.28-SNAPSHOT que je viens de 
déployer, vous n'avez plus besoin d'overrider getHostPagePath(..) puisque 
"war/GwtTestUtils.html" est considéré comme un chemin de fichier HTML par 
défaut pour votre module "com.test.gwtTestUtils.GwtTestUtils"

Merci pour votre confirmation, que je puisse fermer l'anomalie :-)

Original comment by gael.laz...@gmail.com on 7 May 2011 at 3:54

GoogleCodeExporter commented 9 years ago
Bonjour désolé pour répondre si tard.

Je viens de tester en prenant la derniere version non beta de 0.28 et ça 
fonctionne bien.

Par contre,j'ai deux petites questions qui ont rien à voir avec le sujet du 
départ.

Au niveau du code de la méthode checkRPCCallSuccess() ce situant à l url 
http://code.google.com/p/gwt-test-utils/wiki/MockingRpcServices, pourquoi le 
assertEquals a la valeur "mocked call" alors que avant on a fait ceci 
// click to call server back
Browser.click(button);

J'ai bien vu que dans la méthode checkRPCCallSuccess on a fait 
expectServiceAndCallbackOnSuccess("mocked call") mais je comprends pas bien 
pourquoi dans le assertEquals on a pas "vous avez cliquez sur le bouton".

Ma deuxieme question concerne la methode "getNodeObjectFinder", le code se 
situe à l url 
"http://code.google.com/p/gwt-test-utils/wiki/HowToWriteCsvScenario".

Pourquoi au niveau de "rpcComposite" au niveau de la classe anonyme, on met 
"RootPanel.get().getWidget(2), node" alors que dans "simpleComposite" on a mis 
"RootPanel.get().getWidget(0), node". Je ne comprends pas bien pourquoi car si 
on regarde le code de la méthode onModueLoad on fait ceci:  c1 = new 
SimpleComposite();
      RootPanel.get().add(c1);
      c2 = new RPCComposite();
      RootPanel.get().add(c2);

D'après moi on devrait écrire "RootPanel.get().getWidget(1), node" au niveau 
de "rpcComposite".
Je vous remercie du renseignement

Original comment by frankje...@gmail.com on 15 May 2011 at 7:31

GoogleCodeExporter commented 9 years ago
Réponse 1 : 
- Le click déclenche l'appel au service, qui est mocké et renvoie "mocked 
call" lors de la simulation d'un succès(via expectServiceAndCallbackOnSuccess).
- Notre IHM utilise le résultat du serveur pour mettre à jour via :

               public void onSuccess(String result) {
                  label.setText(result);
               }

- On peut donc faire l'assert sur le contenu du label avec ce qui a été 
mocké par le serveur.

Réponse 2 : Il s'agissait effectivement d'une erreur ! c'est bien 
"RootPanel.get().getWidget(1)" qu'il faut mettre, j'ai mis à jour la page wiki 
correspondante, merci beaucoup pour votre feedback !

Je clos donc l'anomalie puisque tout va bien sur la 0.28.

Merci ;-)

Original comment by gael.laz...@gmail.com on 17 May 2011 at 11:43

GoogleCodeExporter commented 9 years ago
Hello,
I am starting with a simple GWTTest class. I always get the error:

at com.octo.gwt.test.GwtRunnerBase.<init>(GwtRunnerBase.java:34)
    at com.octo.gwt.test.GwtRunner.<init>(GwtRunner.java:25)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at org.junit.internal.requests.ClassRequest.buildRunner(ClassRequest.java:33)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:28)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.<init>(JUnit4TestSet.java:45)
    at org.apache.maven.surefire.junit4.JUnit4DirectoryTestSuite.createTestSet(JUnit4DirectoryTestSuite.java:56)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.locateTestSets(AbstractDirectoryTestSuite.java:96)
    at org.apache.maven.surefire.Surefire.createSuiteFromDefinition(Surefire.java:209)
    at org.apache.maven.surefire.Surefire.run(Surefire.java:156)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
    at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Caused by: com.octo.gwt.test.exceptions.GwtTestConfigurationException: Cannot 
find any 'module-file' setup in configuration file 
'META-INF/gwt-test-utils.properties'
    at com.octo.gwt.test.internal.ConfigurationLoader.readFiles(ConfigurationLoader.java:281)
    at com.octo.gwt.test.internal.ConfigurationLoader.<init>(ConfigurationLoader.java:84)
    at com.octo.gwt.test.internal.ConfigurationLoader.createInstance(ConfigurationLoader.java:47)
    at com.octo.gwt.test.internal.GwtClassLoader.<init>(GwtClassLoader.java:77)
    at com.octo.gwt.test.internal.GwtClassLoader.<clinit>(GwtClassLoader.java:39)

I know this is because it cannot load the module-file specified.
Where do you place the META-INF/gwt-test-util.properties?
I have following source folders
src/main/java
 -> com.mycompany.myapp -> myapp.gwt.xml
 -> com.mycompany.myapp.client -> MyApp
src/main/webapp
 -> WEB-INF

src/test/java
 -> com.mycompany.myapp -> MyAppTest
src/test/webapp
 ->META-INF/gwt-test-utils.properties

In my MyAppTest I have overridden getModuleName
@Override
public String getModuleName() {     
    return "com.mycompany.myapp.client.JIRAUser";
}

What is wrong?

Original comment by anikaa...@gmail.com on 25 May 2011 at 9:05

GoogleCodeExporter commented 9 years ago
the META-INF/gwt-test-utils.properties file should be in your test classpath.

By default, src/test/webapp is not added in the test classpath by maven. So, 
you should put it in src/test/resources if you don't want to customize your 
maven configuration.

Hope that helps !

Original comment by gael.laz...@gmail.com on 25 May 2011 at 9:10