代码之家  ›  专栏  ›  技术社区  ›  Igor Artamonov

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

  •  3
  • Igor Artamonov  · 技术社区  · 14 年前

    我在测试我的 grails 应用程序使用生成HTTP请求的集成测试。实际上这是硒/碲的测试,但并不重要。但正如我在运行Grails测试时看到的那样,它不会启动Web容器,同时我在博客文章中看到许多例子,人们使用Selenium和其他需要HTTP访问的测试工具来测试Grails应用程序。

    我创建了一个空的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在执行集成测试时打开端口?

    2 回复  |  直到 14 年前
        1
  •  12
  •   Burt Beckwith    14 年前

    Grails默认支持两种类型的测试:单元测试和集成测试,以及使用插件的功能测试。单元测试和集成测试非常相似,实际上都是单元测试,除了集成测试有一个初始化的Spring应用程序上下文、休眠配置、内存数据库等,但是没有运行的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/

        2
  •  3
  •   Aaron Saunders    14 年前