如何在运行集成测试时将Grails作为Web应用程序启动

Igo*_*nov 3 java grails groovy integration-testing

我正在尝试使用进行http请求的集成测试来测试我的grails应用程序.实际上它是硒/碲测试,但没关系.但正如我所看到的,当我运行grails测试时,它不会启动Web容器,同时我在博客文章中看到很多例子,人们使用selenium和其他需要http访问的测试工具来测试grails app.

我创建了一个空的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
Run Code Online (Sandbox Code Playgroud)

没关系.

现在添加一个尝试连接到grails的集成测试test/integration/ListenPortTest.groovy:

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

并再次运行测试.现在我们收到以下异常:

Connection refused
   java.net.ConnectException: Connection refused
   ....
Run Code Online (Sandbox Code Playgroud)

我也使用浏览器,wget和netstat检查了它,看起来像grails没有启动或没有打开任何端口.

问题是:在执行集成测试时,如何配置grails来打开端口?

Bur*_*ith 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,如果你正在寻找Selenium支持,它将是你最好的选择.该手册位于http://geb.codehaus.org/,最近有一篇关于它的博客文章:http://blog.springsource.com/2010/08/28/the-future-of-functional-网络测试/