Java 运行Grails服务单元测试的IllegalStateException
我有一个简单的grails服务:Java 运行Grails服务单元测试的IllegalStateException,java,unit-testing,grails,grails-3.3,Java,Unit Testing,Grails,Grails 3.3,我有一个简单的grails服务: @Transactional class SearchService { def doSomething() { 10 } } 通过简单的单元测试: class SearchServiceSpec extends Specification implements ServiceUnitTest<SearchService>{ def setup() { } def cleanup() {
@Transactional
class SearchService {
def doSomething() {
10
}
}
通过简单的单元测试:
class SearchServiceSpec extends Specification implements ServiceUnitTest<SearchService>{
def setup() {
}
def cleanup() {
}
void "test something"() {
expect:
service.doSomething() == 10
}
}
类SearchServiceSpec扩展规范实现ServiceUnitTest{
def设置(){
}
def cleanup(){
}
无效“测试某物”(){
期望:
service.doSomething()==10
}
}
运行测试时,出现以下异常:
有人知道这是什么意思吗
奇怪的是,如果我将doSomething
更改为getSomething
,然后执行服务。something
我有以下版本:
|Grails版本:3.3.0
|Groovy版本:2.4.11
|JVM版本:1.8.0_60这是因为getter方法没有应用事务行为。要测试事务性方法,您需要有一个GORM实现设置。测试中最简单的方法是使用“get”方法实现
grails.testing.gorm.DataTest
,这正是他们在文档中所拥有的:向类添加@Mock()注释,它应该连接gorm并工作。(3.3之前的Grails)。我不知道他们是如何在3.3中对其进行更改的。如果能在“单元测试服务”部分的官方文档中对此进行记录,那就太好了。由于默认情况下服务是通过事务行为生成的,所以文档中必须包含这一点,这是一个重要的事实。然后我鼓励您向文档提交PR。这就解决了问题。我同意@bassmartin的观点,没有这么一篇帖子,我不可能弄明白这一点。