GWT RPC GWTTestCase+;GUICE 2.0

GWT RPC GWTTestCase+;GUICE 2.0,gwt,guice,gwttestcase,Gwt,Guice,Gwttestcase,我正在尝试创建一个应用程序,前端是GWT,后端是GUICE,由Google应用程序引擎提供服务 我使用示例设置创建了一个非常简单的应用程序 该应用程序运行良好,但是我想为GWT RPC调用添加一些单元测试 我正在尝试使用GWTTestCase,如下所示: `public void testContactMessageService(){ ContactMessage message=newcontactmessage(); message.setName(“杰夫”); setMessage(“

我正在尝试创建一个应用程序,前端是GWT,后端是GUICE,由Google应用程序引擎提供服务

我使用示例设置创建了一个非常简单的应用程序

该应用程序运行良好,但是我想为GWT RPC调用添加一些单元测试

我正在尝试使用GWTTestCase,如下所示: `public void testContactMessageService(){

ContactMessage message=newcontactmessage();
message.setName(“杰夫”);
setMessage(“只是想说我是个粉丝。”);
message.setEmail(“man.nick。utd@gmail.com");
contactMessageService异步contactMessageService=GWT.create(contactMessageService.class);
contactMessageService.sendMessage(消息,
新的AsyncCallback(){
失败时的公共无效(可丢弃){
//向用户显示RPC错误消息
系统输出打印项次(捕获);
失败(“重大失败”);
finishTest();
}
成功时的公共void(字符串结果){
System.out.println(“成功,比亚奇”);
资产真实(真实);
finishTest();
}
});
延迟测试完成(1000);
}
`/**

但是,当我运行测试时,它失败了,并在控制台上打印

[警告]404-POST/com.resume.Contacthandler.JUnit/GWT.rpc(192.168.0.11)1425字节 请求头 主持人:192.168.0.11:4016 用户代理:Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.9.0.19)Gecko/2010031422 Firefox/3.0.19 接受语言:en us 接受:/ 连接:保持活力 Referer:192.168.0.11:4016/com.resume.Contacthandler.JUnit/JUnit.html?gwt.codesvr=192.168.0.11:4012 X-GWT-置换:HostedMode X-GWT-Module-Base:192.168.0.11:4016/com.resume.Contacthandler.JUnit/ 内容类型:text/x-gwt-rpc;字符集=utf-8 内容长度:285 响应头 内容类型:text/html;字符集=iso-8859-1 内容长度:1425 com.google.gwt.user.client.rpc.StatusCodeException:404 HTTP错误:找不到404 RequestURI=/com.resume.Contacthandler.JUnit/GWT.rpc

从这个输出中,我假设服务器端没有安装Guice


在运行GWTTestCase时,如何设置服务器端Guice servlet?

除了StuffThatHappers博客中的方法外,还有更简单的方法来让Guice和GWT工作。例如,以下代码是启动并运行servlet所需的大部分操作。这不涉及任何GWT代码,因此很容易使用纯JRE测试进行测试—您只需要设置一个测试注入器并获取服务Impl的实例

serve("/myapp/importservice").with(SourceImportServiceImpl.class);


@Singleton
public class SourceImportServiceImpl extends RemoteServiceServlet {

  private Provider<SimpleDao> daoProvider;

  @Inject
  public SourceImportServiceImpl(Provider<SimpleDao> daoProvider) {
    this.daoProvider = daoProvider;
  }

 ... RPC method implementations
}
service(“/myapp/importservice”)。与(sourceimportservicepimpl.class);
@独生子女
公共类SourceImportServiceImpl扩展了RemoteServiceServlet{
私人供应商;
@注入
public SourceImportServiceImpl(提供程序daoProvider){
this.daoProvider=daoProvider;
}
…RPC方法实现
}

太棒了,非常感谢,我已经学习了很多教程,但没有发现我遗漏了在Web.xml中实现的服务(“…”)部分,但是我的注入器从未注入任何东西
serve("/myapp/importservice").with(SourceImportServiceImpl.class);


@Singleton
public class SourceImportServiceImpl extends RemoteServiceServlet {

  private Provider<SimpleDao> daoProvider;

  @Inject
  public SourceImportServiceImpl(Provider<SimpleDao> daoProvider) {
    this.daoProvider = daoProvider;
  }

 ... RPC method implementations
}