2009-06-09 28 views
0

我正在尝试使用GWT来获取RPC测试。我正在使用默认的StockWatcher项目here,我下载了项目,我导入它,一切工作正常。无法获取单元测试GWT上的RPC

然后我在的StockWatcher项目运行junitcreator:

/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 

此创建StockWatcherTest.java在适当的test目录,并给我一些托管和Web模式启动文件。

然后,我还将junit.jar添加到此项目的类路径中。

然后我修改StockWatcherTest.java来测试我是否有能力向服务器发出异步请求。一切看起来很好,但是当我尝试在托管模式下运行StockWatcherTest.java,我得到以下错误:

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'

这里是我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); 
    } 

} 

这里是COM /谷歌/ GWT /样品/的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> 

,这里是在web.xml中产生我的战争

<?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> 

那么我做错了什么?任何帮助表示赞赏。谢谢。

回答

3

1-您需要添加“finishTest();”在“onSuccess”方法的末尾。

2 - 为了解决您所得到的问题:在您的StockWatcher.gwt.xml中添加您的servlet问候语的路径。

servlet路径= '/迎接' 类= 'com.google.gwt.sample.stockwatcher.server.GreetingServiceImpl'/