2009-06-09 21 views
0

J'essaie d'obtenir un test RPC en utilisant GWT. J'utilise le projet StockWatcher par défaut qui est mentionné here, je télécharge le projet, je l'importe, tout fonctionne bien.Problème lors des tests unitaires de RPC sur GWT

Je lance alors junitcreator dans le projet StockWatcher:

/Users/stephen/Work/gwt/gwt-mac-1.6.4/junitCreator -junit /Users/stephen/Applications/eclipse/plugins/org.junit_3.8.2.v20080602-1318/junit.jar -module stockwatcher -eclipse StockWatcher com.google.gwt.sample.stockwatcher.StockWatcherTest 

cela crée le StockWatcherTest.java dans le répertoire de test approprié, et me donne quelques hébergés et le mode Web des fichiers de lancement.

J'ai ensuite ajouté junit.jar au classpath pour ce projet. Je modifie ensuite StockWatcherTest.java pour tester si je suis capable de faire une demande asynchrone au serveur. Tout semble bien, mais quand je tente d'exécuter StockWatcherTest.java en mode hébergé, je reçois l'erreur suivante:

Starting HTTP on port 0 HTTP

listening on port 49569

The development shell servlet received a request for 'greet' in module 'com.google.gwt.sample.stockwatcher.StockWatcher.JUnit.gwt.xml' [WARN] Resource not found: greet; (could a file be missing from the public path or a tag misconfigured in module com.google.gwt.sample.stockwatcher.StockWatcher.JUnit.gwt.xml ?) com.google.gwt.user.client.rpc.StatusCodeException: Cannot find resource 'greet' in the public path of module 'com.google.gwt.sample.stockwatcher.StockWatcher.JUnit'

Voici ma classe StockWatcherTest.java

package com.google.gwt.sample.stockwatcher.client; 

import com.google.gwt.core.client.GWT; 
import com.google.gwt.junit.client.GWTTestCase; 
import com.google.gwt.user.client.rpc.AsyncCallback; 

/** 
* GWT JUnit tests must extend GWTTestCase. 
*/ 
public class StockWatcherTest extends GWTTestCase { 

    /** 
    * Must refer to a valid module that sources this class. 
    */ 
    public String getModuleName() { 
    return "com.google.gwt.sample.stockwatcher.StockWatcher"; 
    } 

    /** 
    * Add as many tests as you like. 
    */ 
    public void testSimple() { 
     GreetingServiceAsync greetingService = GWT.create(GreetingService.class); 
     greetingService.greetServer("Bob", 
       new AsyncCallback<String>() { 
        public void onFailure(Throwable caught) { 
         // Show the RPC error message to the user 
         System.out.println(caught); 
         fail("big time failure"); 
         finishTest(); 
        } 

        public void onSuccess(String result) { 
         System.out.println("success, biatch"); 
         assertTrue(true); 
        } 
       }); 
     delayTestFinish(1000); 
    } 

} 

Voici com/google/GWT/échantillon/stockwatcher/StockWatcher.gwt.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.2//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.6.2/distro-source/core/src/gwt-module.dtd"> 
<module rename-to='stockwatcher'> 
    <!-- Inherit the core Web Toolkit stuff.      --> 
    <inherits name='com.google.gwt.user.User'/> 

    <!-- Inherit the default GWT style sheet. You can change  --> 
    <!-- the theme of your GWT application by uncommenting   --> 
    <!-- any one of the following lines.       --> 
    <inherits name='com.google.gwt.user.theme.standard.Standard'/> 
    <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> --> 
    <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>  --> 

    <!-- Other module inherits          --> 

    <!-- Specify the app entry point class.       --> 
    <entry-point class='com.google.gwt.sample.stockwatcher.client.StockWatcher'/> 
</module> 

et voici web.xml dans ma guerre généré

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd"> 

<web-app> 

    <!-- Default page to serve --> 
    <welcome-file-list> 
    <welcome-file>StockWatcher.html</welcome-file> 
    </welcome-file-list> 

    <!-- Servlets --> 
    <servlet> 
    <servlet-name>greetServlet</servlet-name> 
    <servlet-class>com.google.gwt.sample.stockwatcher.server.GreetingServiceImpl</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>greetServlet</servlet-name> 
    <url-pattern>/stockwatcher/greet</url-pattern> 
    </servlet-mapping> 

</web-app> 

Alors qu'est-ce que je fais mal? Toute aide est appréciée. Je vous remercie.

Répondre

3

1-vous devez ajouter "finishTest();" à la fin de la méthode "onSuccess". 2-Et pour résoudre l'exeption vous avez: ajoutez dans votre StockWatcher.gwt.xml le chemin vers votre salutation de servlet.

chemin de servlet

= '/ greet' class = 'com.google.gwt.sample.stockwatcher.server.GreetingServiceImpl'/