Hibernate 使用NewSession()进行Grails GORM服务类测试

Hibernate 使用NewSession()进行Grails GORM服务类测试,hibernate,grails,gorm,integration-testing,Hibernate,Grails,Gorm,Integration Testing,我正在尝试更新我的测试,因为我更改了我的服务类。 在我添加的服务方法中(“withNewSession”) 因为我使用的是“withNewSession”,所以我得到的方法缺少异常,因为这个域在我的测试类中被模拟。您应该使用集成测试而不是单元测试来测试持久性。仅当测试依赖于域类的控制器或其他类,但域类不是被测试的类时,才使用域类模拟。单元测试不允许使用withNewSession方法。在测试类中使用: @org.junit.Before void before() { DomainCla

我正在尝试更新我的测试,因为我更改了我的服务类。 在我添加的服务方法中(“withNewSession”)


因为我使用的是“withNewSession”,所以我得到的方法缺少异常,因为这个域在我的测试类中被模拟。

您应该使用集成测试而不是单元测试来测试持久性。仅当测试依赖于域类的控制器或其他类,但域类不是被测试的类时,才使用域类模拟。

单元测试不允许使用withNewSession方法。在测试类中使用:

@org.junit.Before
void before() {
    DomainClazz.metaClass.static.withNewSession = {Closure c -> c.call() }
}

服务方法执行一些业务逻辑,我正在尝试对此进行测试。我必须围绕逻辑添加Domain.withNewSession的原因是因为我正在多线程场景中运行该方法。这解决了我的问题。喜欢Groovy的元编程功能:)
@org.junit.Before
void before() {
    DomainClazz.metaClass.static.withNewSession = {Closure c -> c.call() }
}