0

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

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)
    ...

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

问题:

  • 有没有办法忽略 GWT JUnit 测试的同源策略?
  • 我可以将用于测试的浏览器更改为 Chrome/Chromium 吗?
  • 如何在浏览器中使用 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-Plugin。如果我删除问号后面的部分(就像我想在本地主机上以 SuperDevMode 运行 GWT-Code 一样),?gwt.codesvr=127.0.1.1:40387那么浏览器将只显示一个空白页面,并且如果我启动代码服务器:

mvn process-classes gwt:run-codeserver

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

问题:

那么如何使用 SuperDevMode 编译 JUnit-Test-Module 呢?

4

1 回答 1

1

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

如果你想在 Chrome/Chromium 中运行测试,你可以使用-runStyle ManualSelenium(注意:PhantomJS 甚至有自定义运行样式),因为 DevMode 不再有效,正如你所说,你必须运行测试在产品模式下:-prod -userAgents safari

于 2014-10-01T09:35:46.593 回答