2014-10-20 85 views
2

我有一個項目,我通常使用grails run-app命令調試/運行。我想運行一個測試,但沒有讓服務器只運行特定的測試。運行grails功能測試,沒有嵌入tomcat啓動

我通常在後臺以調試模式一直運行服務器。

我已經試過玩弄於iteli-J的運行配置,與最新的嘗試是grails test-app functional: className

回答

1

這個插件,也許可以幫助你。

Grails functional-test-development Plugin

這個插件的目的是使開發功能測試Grails的通過促進對已經運行的應用程序中運行你的測試更加方便。它利用了Grails 1.3.5中增加的改進功能測試支持,並且不適用於早期版本。

+0

有人可以運行grails交互式控制檯,並從那裏執行調試模式的平臺? – 2014-10-21 20:54:49

2

在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=...運行,並且測試只是掛起。