我正在尝试运行异步测试,需要向我的服务器发送请求,该服务器具有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中启动测试。
修改
如果我想手动运行测试,请将以下内容写入终端:
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
但是如果我将此URL输入我的浏览器(Chromium),它会通知我当前没有安装GWT-Plugin。如果我删除问号后面的部分(就像我想在本地主机上运行SuperDevMode中的GWT代码)?gwt.codesvr=127.0.1.1:40387
那么浏览器将只显示一个空白页面,如果我启动了代码服务器用:
mvn process-classes gwt:run-codeserver
codeserver-bookmarks(Dev Mode On
)不起作用,GWT无法检测到可编译的模块&#34;。
那么我是如何用SuperDevMode编译JUnit-Test-Module的呢?
答案 0 :(得分:1)
您无法绕过SOP,但您可以使用servlet代理对远程服务器的请求(在gwt.xml文件中使用<servlet>
声明的servlet受JUnitShell支持。)
如果您想在Chrome / Chromium中运行测试,可以使用-runStyle Manual
或Selenium(注意:甚至还有custom run style for PhantomJS),因为DevMode不再有效,正如您所指出的,您必须以产品模式运行测试:-prod -userAgents safari