grails geb -baseUrl选项不适用于远程服务

时间:2014-01-04 19:30:45

标签: grails geb

我正在使用geb 0.9.2插件来获取grails 2.3.4

我想在两个单独的主机上分别从服务运行功能测试。

我观察到以下情况:

如果我在同一主机上运行该服务,并执行:

  

grails test-app functional: -baseUrl=http://localhost:8080/foo/--non-interactive

然后针对此已经运行的服务运行测试并传递。

如果服务没有运行,并且我执行相同的命令,那么在http://localhost:8080/foo/内启动一个新的服务实例,并针对该服务运行测试。 (这对我来说意外)

如果服务在其他主机上运行,​​请说grails test-app并运行:

  

http://other:16060/foo/

...然后启动本地服务,并针对该服务而不是针对指定的远程服务运行测试。这对我来说再次出乎意料。

我找不到任何解释此行为的文档。

是否可以针对远程运行的服务运行http://other:16060/foo/

(虽然我最近没有对它进行测试,但这种行为也是grails 2.2.2的情况)

2 个答案:

答案 0 :(得分:2)

这似乎是一个grails bug(?功能)。

Grails通过连接到服务端口来检查服务是否正在运行。

如果服务未运行,则启动服务。

niggle是:即使baseUrl指向其他主机,也要检查服务是否正在运行,即使localhost / 127.0.0.1也是如此。

我通过使用unix nc工具在127.0.0.1上启动虚假服务器来解决这个问题。这足以使grails认为服务已经运行而不是启动新服务。然后它尊重baseUrl并测试远程的。

呃。

答案 1 :(得分:0)

传递baseUrl参数是针对远程服务器运行它的方式,因此您可以正确地执行所有操作。它不会的唯一原因是你也传入-inline或-war标志。

尝试在测试中关闭分叉执行,看看是否能解决问题,可能是参数没有传递给分叉的JVM。

http://grails.org/doc/2.3.x/guide/commandLine.html#forkedMode