我正在使用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的情况)
答案 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