Java 使用cookies进行GWT单元测试

Java 使用cookies进行GWT单元测试,java,unit-testing,gwt,cookies,Java,Unit Testing,Gwt,Cookies,我想用cookies对GWT项目进行单元测试。我目前正在对代码的身份验证部分进行单元测试。因此,我需要能够将sessionID存储为cookie,并在以后检索它。我目前正在使用SyncProxy的普通测试用例(而不是GWTTestCase)来测试异步行为 问题在于,SyncProxy和单元测试都不是浏览器,都不支持cookie的管理。你知道我如何测试这个吗 完整地说,在尝试测试时,我得到以下错误: java.lang.UnsatisfiedLinkError: com.google.gwt.us

我想用cookies对GWT项目进行单元测试。我目前正在对代码的身份验证部分进行单元测试。因此,我需要能够将sessionID存储为cookie,并在以后检索它。我目前正在使用SyncProxy的普通测试用例(而不是GWTTestCase)来测试异步行为

问题在于,SyncProxy和单元测试都不是浏览器,都不支持cookie的管理。你知道我如何测试这个吗

完整地说,在尝试测试时,我得到以下错误:

java.lang.UnsatisfiedLinkError: com.google.gwt.user.client.Cookies.uriEncode(Ljava/lang/String;)Ljava/lang/String;
    at com.google.gwt.user.client.Cookies.uriEncode(Native Method)
    at com.google.gwt.user.client.Cookies.setCookie(Cookies.java:177)
    at com.google.gwt.user.client.Cookies.setCookie(Cookies.java:158)
    at com.projects.client.Authentication.setSesssionCookie(Authentication.java:64)
    at com.projects.client.Authentication$signInCredentialsHandler.onSuccess(Authentication.java:96)
    at com.projects.client.Authentication$signInCredentialsHandler.onSuccess(Authentication.java:1)
    at com.gdevelop.gwt.syncrpc.RemoteServiceInvocationHandler$1.run(RemoteServiceInvocationHandler.java:175)

Cookie单元测试方法

1) Cookie的GWT单元测试

2) 现在还不清楚为什么需要测试已经过单元测试的GWT代码。如果您的场景是集成测试,那么基于Selenium的浏览器测试用例是最佳选择

3) 使用模拟库或测试实用程序,如


我不推荐第三种方法。如果您的单元测试变得复杂,那么您的代码就复杂了,或者场景是错误的。

正如SSR所说,cookies已经过测试,为什么您需要再次测试它??。我相信您需要一个cookie字符串,以便可以对您的方法进行单元测试。如果是这种情况,请尝试模拟该方法并返回所需的任何字符串,或者您可以忽略该方法调用

我也在做同样的事情,这段代码在我的环境中工作。 您可以从cookie中获取sessionid

CookieManager cookiemanager = LoginUtils.loginFormBasedJ2EE("hostname", "username", "password");

                    SyncProxy.setBaseURL("baseURI");



                    StandardDispatchService rpcService =  SyncProxy.createProxy(StandardDispatchService.class,
                            new ProxySettings().setCookieManager(cookiemanager));

                    System.out.println(cookiemanager.getCookieStore().getCookies().get(0));
                    String JSESSIONID = cookiemanager.getCookieStore().getCookies().get(0).getValue();

                    rpcService.execute(new XXXAction(XXX,XX));

使用Selenium测试是否超出了此范围?问题是我想测试身份验证类的signIn和signOut。但当我测试这些方法时,cookies被设置、检索……因此我发布了错误。我应该使用测试标志,将sessionID存储在某个地方还是其他什么地方?我不喜欢这两种选择,它们不能保持代码的整洁。谢谢。我没有考虑嘲弄。你提供的链接无效。wiki有一篇很好的文章: