2017-03-16 144 views

回答

0

Grails的3集成测试将运行对正在运行的服务器。您需要定义一个测试环境application.yml并将@Integration注释添加到您的类中。

import grails.test.mixin.integration.Integration 
import spock.lang.Specification 

@Integration 
class LookupServiceIntegrationSpec extends Specification { 

    def lookupService 

    def setup() { 
    } 

    def cleanup() { 
    } 

    void "test database connection"() { 

     when: 
     def row = lookupService.testMethod() 

     then: 
     println("Row one = "+row.one) 
     row.one == 1 
    } 
} 

下面是一个简单的例子服务:

import grails.transaction.Transactional 
import groovy.sql.Sql 

@Transactional 
class LookupService { 

    def dataSource 

    def testMethod() { 
     Sql sql = new Sql(dataSource) 
     sql.firstRow("SELECT 1 AS one") 
    } 
} 
+0

thx为答案。但是,如何将它附加到正在运行的应用程序在'localhost:8080'上? – zatziky

+0

你在谈论功能测试而不是集成测试。 – Joe

+0

我在说这两个测试。在Grails中,功能测试在技术上也是集成测试,因为它们也用'@ Integration'注释......但是非常感谢您试图帮助我。 :D也许我应该概括一下我的问题:“我如何再次运行任何代码来运行Grails服务器?”。你看到我需要什么吗? – zatziky

0

也许你想找的功能测试不集成测试。 Grails 3为功能测试增加了更好的支持。请参阅以下链接。

Grails 3 Functional Tests