如何为Grails集成测试创建示例数据源?

如何为Grails集成测试创建示例数据源?,grails,datasource,integration-testing,Grails,Datasource,Integration Testing,在Grails2.1.x中,我想为集成测试创建一个额外的数据源,以便验证我的服务是否从用户指定的数据源动态地提取数据。目前,我的测试非常简单,例如: @Test void "get Action Types by data source name returns all action types"() { new ActionCache(actionType: 'Action Type 1').test.save() new ActionCache(actionType: 'Ac

在Grails2.1.x中,我想为集成测试创建一个额外的数据源,以便验证我的服务是否从用户指定的数据源动态地提取数据。目前,我的测试非常简单,例如:

@Test
void "get Action Types by data source name returns all action types"() {
    new ActionCache(actionType: 'Action Type 1').test.save()
    new ActionCache(actionType: 'Action Type 2').test.save()
    new ActionCache(actionType: 'Action Type 3').save()

    def result = reportService.getActionTypesByDataSource('test')
    assert result.size() == 2
}
如果我在dataSource.groovy中为测试环境配置一个名为
test
的新数据源,那么我可以通过测试,但是新数据源会显示在我的所有测试中;单元和集成。理想情况下,我希望创建一个新的数据源,作为集成测试设置的一部分,使用如下内容:

def grailsApplication

@Before
void setUp() {
    grailsApplication.config.dataSource_test = {
        dbCreate = "update"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE"
    }
}

但是,数据源似乎是在运行集成测试之前加载的,我不知道如何添加到这些数据源中。

这听起来像是一种定制环境。在DataSource.groovy中,您应该看到一个类似以下内容的部分:

test {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
}
grails -Dgrails.env=integrationTest run-app
我会在测试块之后添加一个名为integrationTest的自定义环境,如下所示:

integrationTest {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:mem:myinttestDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
}
要使用此自定义环境运行,您可以按如下方式启动grails应用程序:

test {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
    }
}
grails -Dgrails.env=integrationTest run-app

希望这有帮助。

这里的一些插件可能有用。这是一个有用的列表,但上面没有回答我的问题。