gwt - 测试异步 rpc

标签 gwt testing proxy synchronization rpc


这里有人使用过 GWT SyncProxy 吗?
我尝试测试一个异步rpc,但是没有测试onFailure和onSuccess下的代码。不幸的是没有错误日志,但也许有人可以帮助我。该示例来自此页面:http://code.google.com/p/gwt-syncproxy/

编辑:
我希望测试失败。所以我添加了“assertNull(result);”。奇怪的是,控制台首先给出“异步好”的结果,然后给出“异步坏”的结果。所以函数运行了两次?! Junit 给出的结果是绿色。

public class Greeet extends TestCase {
@Test
public void testGreetingServiceAsync() throws Exception {
      GreetingServiceAsync rpcServiceAsync = (GreetingServiceAsync) SyncProxy.newProxyInstance(
        GreetingServiceAsync.class, 
        "http://127.0.0.1:8888/greettest/", "greet");

      rpcServiceAsync.greetServer("SyncProxy", new AsyncCallback<String>() {
        public void onFailure(Throwable caught) {
          System.out.println("Async bad " );
        }
        public void onSuccess(String result) {
          System.out.println("Async good " );
          assertNull(result);
        }
      });

      Thread.sleep(100); // configure a sleep time similar to the time spend by the request
}
}

最佳答案

为了使用 gwt-syncproxy 进行测试:

  1. 你必须启动 gwt 服务器:'mvn gwt:run' 如果你正在使用 maven 或 'project -> run as -> web app' 如果你在 eclipse 中。
  2. 您必须设置服务的 url,通常为“http://127.0.0.1:8888/your_module”。请注意,在您的示例中,您使用的是应用程序 html 的 url。
  3. 如果您测试异步,则必须等到调用完成,因此在您的情况下,您需要在方法末尾使用 Thread.sleep(sometime)。
  4. 如果您测试同步,则不需要 sleep 。

这是两个示例测试用例:

同步测试

public void testGreetingServiceSync() throws Exception {
  GreetingService rpcService = (GreetingService)SyncProxy.newProxyInstance(
     GreetingService.class, 
    "http://127.0.0.1:8888/rpcsample/", "greet");
  String s = rpcService.greetServer("SyncProxy");
  System.out.println("Sync good " + s);
}

异步测试

boolean finishOk = false;
public void testGreetingServiceAsync() throws Exception {
  GreetingServiceAsync rpcServiceAsync = (GreetingServiceAsync) SyncProxy.newProxyInstance(
    GreetingServiceAsync.class, 
    "http://127.0.0.1:8888/rpcsample/", "greet");

  finishOk = false;
  rpcServiceAsync.greetServer("SyncProxy", new AsyncCallback<String>() {
    public void onFailure(Throwable caught) {
      caught.printStackTrace();
    }

    public void onSuccess(String result) {
      assertNull(result);
      finishOk = true;
    }
  });

  Thread.sleep(100);
  assertTrue("A timeout or error happenned in onSuccess", finishOk);
}

关于gwt - 测试异步 rpc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12653132/

相关文章:

生产中的 GWT 源 map

testing - 获取日志为提供了以下所需功能,但 Appium 无法识别

php - 如何更改 docker jwilder/nginx-proxy 上传限制?

linux - 如何从 Google Chrome for Linux(Fedora) 的代理中排除某些域或 IP 地址?

GWT 2.1 MVP(事件/地点)和选项卡式显示

gwt - 漏洞? GXT (Ext GWT) 在 'devmode' 目标中编译,但不适用于 'build'

testing - vhdl中的同步/异步d型触发器

angular - karma : How to debug a RangeError: Maximum call stack size exceeded?

c# - 如何(优雅地)确定 C# winforms 应用程序中是否需要代理身份验证

css - 使用带有 CssResource 和 @if 的 GWT 的移动设备的不同字体大小