我试图创建一个应用程序与GWT的前端和GUICE的后端服务于谷歌应用程序引擎。
我创建了一个非常简单的应用程序,使用示例设置
http://stuffthathappens.com/blog/2009/09/14/guice-with-gwt/评论- 49355
应用程序运行良好,但是我想为GWT RPC调用添加一些单元测试。
我试图使用GWTTestCase如下:` `公共无效testContactMessageService() {
ContactMessage message = new ContactMessage();
message.setName("Jeff");
message.setMessage("Just wanted to say I'm a fan.");
message.setEmail("man.nick.utd@gmail.com");
ContactMessageServiceAsync contactMessageService = GWT.create(ContactMessageService.class);
contactMessageService.sendMessage(message,
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);
finishTest();
}
});
delayTestFinish(1000);
}
"/* *
然而,当我运行测试时,它失败了,在控制台上它打印
[WARN] 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)壁虎/2010031422火狐/3.0.19接收语言:en - us接受:/连接:维生推荐人:192.168.0.11:4016/com.resume.Contacthandler.JUnit/junit.html ? gwt.codesvr = 192.168.0.11:4012X-GWT-Permutation: HostedModeX-GWT-Module-Base: 192.168.0.11:4016/com.resume.Contacthandler.JUnit/内容类型:文本/x-gwt-rpc;utf - 8字符集=内容长度:285响应头内容类型:text/html;charset = iso - 8859 - 1内容长度:1425com.google.gwt.user.client.rpc.StatusCodeException: 404HTTP错误:404 not_foundRequestURI =/com.resume.Contacthandler.JUnit GWT.rpc
从这个输出中,我假设Guice的服务器端没有得到设置。
运行GWTTestCases时如何设置服务器端Guice servlet
要使Guice和GWT工作,除了博客中的方法之外,还有更简单的方法。例如,下面的代码是启动并运行servlet所需要做的大部分工作。这不会触及任何GWT代码,因此很容易使用纯JRE测试进行测试——您只需要设置一个测试注入器并获得Service 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
}