有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java GWT JUnit测试是否可以忽略sameorigin策略

我正在尝试运行一个异步测试,需要向我的服务器发送一个请求,该服务器有一个REST-API。所以我的问题是测试是在本地机器上执行的,但这显然违反了同源策略,如果我尝试运行GWTtestCase,我会出现运行时错误:

com.google.gwt.http.client.RequestPermissionException: The URL http://<url-to-my-rest-service> is invalid or violates the same-origin security restriction
    at com.google.gwt.http.client.RequestBuilder.doSend(RequestBuilder.java:394)
    at com.google.gwt.http.client.RequestBuilder.send(RequestBuilder.java:242)
    ...

我知道我可以手动运行这些测试,但随着浏览器(chromium)的最新更新,GWT插件被删除。所以我不知道如何在SuperDevMode中启动测试

问题:

  • 有没有办法忽略GWT JUnit测试的同源策略
  • 我可以将用于测试的浏览器更改为Chrome/Chrome吗
  • 如何在浏览器中使用SuperDevMode手动运行测试

编辑:

如果我想手动运行测试,我会将以下内容写入终端:

mvn gwt:test -Dgwt.args="-prod -userAgents safari -runStyle Manual:1"

然后Maven将打印一个URL到终端,我应该将其输入浏览器以执行测试:

http://127.0.1.1:57818/<my-package>.JUnit/junit-standards.html?gwt.codesvr=127.0.1.1:40387

但如果我在浏览器(Chromium)中输入这个URL,它会通知我GWT插件当前未安装。如果我删除问号后面的部分(就像我想在本地主机上的SuperDevMode中运行GWT代码一样)?gwt.codesvr=127.0.1.1:40387,那么浏览器将只显示一个空白页,并且如果我使用以下命令启动codeserver:

mvn process-classes gwt:run-codeserver

codeserver书签(Dev Mode On)不起作用,GWT无法检测到“可编译”的模块

问题:

那么,我该如何使用SuperDevMode编译JUnit测试模块呢


共 (1) 个答案

  1. # 1 楼答案

    您不能绕过SOP,但可以使用servlet将请求代理到远程服务器(JUnitShell支持在gwt.xml文件中使用<servlet>声明的servlet)

    如果你想在Chrome/Chrome中运行测试,你可以使用-runStyle ManualSelenium(注意:甚至还有一个custom run style for PhantomJS),因为DevMode不再工作,正如你所说,你必须在prod模式下运行测试:-prod -userAgents safari