运行grails功能测试,没有嵌入tomcat启动
我有一个项目,我通常使用grails run-app
命令调试/运行。我想运行一个测试,但没有让服务器只运行特定的测试。运行grails功能测试,没有嵌入tomcat启动
我通常在后台以调试模式一直运行服务器。
我已经试过玩弄于iteli-J的运行配置,与最新的尝试是grails test-app functional: className
这个插件,也许可以帮助你。
Grails functional-test-development Plugin
这个插件的目的是使开发功能测试Grails的通过促进对已经运行的应用程序中运行你的测试更加方便。它利用了Grails 1.3.5中增加的改进功能测试支持,并且不适用于早期版本。
在Grails 2.4.4中如果您重写baseUrl,您可以针对非本地主机的服务器运行测试。例如,我们有一个托管在AWS上的预生产服务器,我们运行了一部分来自Jenkins的功能测试,部署后作为烟雾测试。
grails -plain-output test-app -baseUrl=https://foo.bar.org/ -echoOut -echoErr functional:
虽然有效,但test-app
仍然启动嵌入式tomcat服务器。但是,通过一些挖掘,我发现覆盖服务器主机指向正在运行的实例将导致测试运行,而不启动嵌入式tomcat。有几个方法可以做到这一点:
传递命令行中的值:
grails -plain-output test-app -Dgrails.server.host=foo.bar.org -baseUrl=https://foo.bar.org/ -echoOut -echoErr functional:
或者重写Config.groovy中的价值,为特定的环境也应该工作:
...
preProd {
...
grails.server.host = 'foo.bar.org'
...
}
...
它在测试应用程序中没有记录,但在run-app下提及,它也可用于测试应用程序。
这是有效的,因为Grails通过尝试打开到服务器主机/端口的连接来确定是否应启动嵌入式服务器,并且如果成功则跳过启动。
从试验和错误我发现,即使基址变成冗余信息,我也指出grails.server.host
和-baseUrl
的最佳结果。可能这是因为我的情况涉及到ssl连接,但我试着用-https
而不是-baseUrl=...
运行,并且测试只是挂起。
有人可以运行grails交互式控制台,并从那里执行调试模式的平台? – 2014-10-21 20:54:49