IllegalStateException运行Grails服务单元测试

Emm*_*ohn 1 java grails unit-testing grails-3.3

我有一个简单的grails服务:

@Transactional
class SearchService {
    def doSomething() {
        10
    }
}
Run Code Online (Sandbox Code Playgroud)

通过简单的单元测试:

class SearchServiceSpec extends Specification implements ServiceUnitTest<SearchService>{

    def setup() {
    }

    def cleanup() {
    }

    void "test something"() {
        expect:
        service.doSomething() == 10
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我得到以下异常:

在此输入图像描述

谁知道这意味着什么?

奇怪的是,如果我改变工作doSomethinggetSomething,然后做service.something.

我有以下版本:| Grails版本:3.3.0 | Groovy版本:2.4.11 | JVM版本:1.8.0_60

Jam*_*eeh 5

这是因为getter方法没有应用事务行为.要测试事务方法,您需要设置GORM实现.测试的最简单方法是实现grails.testing.gorm.DataTest.

  • 最好在“单元测试服务”部分的官方文档中对此进行记录。由于默认情况下服务是通过事务行为生成的,因此在文档中包含一个重要的事实。 (2认同)