2010-09-15 71 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/

相关问题