【问题标题】:GWT unit testing with cookies使用 cookie 进行 GWT 单元测试
【发布时间】:2015-04-02 17:01:37
【问题描述】:

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

问题在于 SyncProxy 和 Unit Test 都不能像浏览器一样运行并支持 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)

【问题讨论】:

  • 是否使用 Selenium 测试超出了此范围?

标签: java unit-testing gwt cookies


【解决方案1】:

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

【讨论】:

【解决方案2】:

Cookie 单元测试方法

1) Cookie http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/test/com/google/gwt/user/client/CookieTest.java 的 GWT 单元测试

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

3) 使用模拟库或测试实用程序,例如 http://code.google.com/p/gwt-test-utils/

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

【讨论】:

  • 问题是我想测试认证类的signIn和signOut。但是,当我测试这些方法时,cookie 正在被设置、检索,..因此我发布了错误。我应该使用 TESTING 标志,将 sessionID 存储在某个地方还是其他地方?我不喜欢这两个选项,它们不能保持代码干净。
【解决方案3】:

我也在做同样的事情,这段代码在我的环境中工作。 可以从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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 2023-03-11
    • 2011-11-16
    • 2015-05-28
    相关资源
    最近更新 更多