运行grails功能测试,没有嵌入tomcat启动

运行grails功能测试,没有嵌入tomcat启动

问题描述:

我有一个项目,我通常使用grails run-app命令调试/运行。我想运行一个测试,但没有让服务器只运行特定的测试。运行grails功能测试,没有嵌入tomcat启动

我通常在后台以调试模式一直运行服务器。

我已经试过玩弄于iteli-J的运行配置,与最新的尝试是grails test-app functional: className

这个插件,也许可以帮助你。

Grails functional-test-development Plugin

这个插件的目的是使开发功能测试Grails的通过促进对已经运行的应用程序中运行你的测试更加方便。它利用了Grails 1.3.5中增加的改进功能测试支持,并且不适用于早期版本。

+0

有人可以运行grails交互式控制台,并从那里执行调试模式的平台? – 2014-10-21 20:54:49

在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=...运行,并且测试只是挂起。