2010-09-15 41 views
3

我試圖使用進行http請求的集成測試來測試我的grails應用程序。其實這是硒/碲測試,但沒關係。但正如我所看到的,當我運行grails測試時,它並不啓動web容器,同時我在博客文章中看到許多示例,人們使用selenium和其他需要http訪問的測試工具來測試grails應用程序。如何在運行集成測試時啓動Grails作爲Web應用程序

我已經創建一個空的Grails應用程序:

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-4:generate -DarchetypeGroupId=org.grails -DarchetypeArtifactId=grails-maven-archetype -DarchetypeVersion=1.3.4 -DgroupId=example -DartifactId=testportapp 

cd testportapp/ 

mvn initialize 

mvn grails:test-app 

Tests PASSED - view reports in target/test-reports 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 

這就是確定。

現在添加試圖連接到Grails的test/integration/ListenPortTest.groovy集成測試:

class ListenPortTest extends GroovyTestCase { 
     void testPort(){ 
       def s = new Socket("localhost", 8080); 
       s.close() 
     }   
} 

並再次運行測試。現在我們收到以下異常:

Connection refused 
    java.net.ConnectException: Connection refused 
    .... 

我也檢查了它使用的瀏覽器,wget和netstat的,看起來像沒有開始Grails的或者不打開任何端口。

而問題: 如何在執行集成測試時配置grails以打開端口?

回答

12

Grails支持兩種類型的使用插件默認情況下,單元和集成,再加上功能測試的測試。單元和集成測試非常相似,除了集成測試具有初始化的Spring應用程序上下文,Hibernate配置,內存數據庫等之外,它們都是單元測試。但是沒有運行的Web服務器 - 您需要對此進行功能測試。

功能測試有幾種選擇,最流行的是WebTest:http://grails.org/plugin/webtest,功能測試插件:http://grails.org/plugin/functional-test和Selenium RC插件:http://grails.org/plugin/selenium-rc

最新的是Geb:http://grails.org/plugin/geb如果您正在尋找硒支持,它將是您最好的選擇。手冊在http://geb.codehaus.org/,最近有一篇關於它的博客文章:http://blog.springsource.com/2010/08/28/the-future-of-functional-web-testing/

相關問題