Grails 3:运行集成测试后出现IllegalStateException

时间:2018-01-04 15:24:50

标签: grails integration-testing gorm grails-3.0 grails-3.1

运行集成测试时,我不断收到异常:

import grails.testing.mixin.integration.Integration
import grails.transaction.Rollback
import org.springframework.beans.factory.annotation.Autowired
import spock.lang.Specification

@Integration
@Rollback
class EmailSpec extends Specification {


    @Autowired
    EmailService service

//    def setup() {
//    }
//
//    def cleanup() {
//    }

    def 'test send email'() {
        when: 'email gets sent'
        def sendMailCalled = false
        service.metaClass.sendTestEMail = {
            sendMailCalled = true
        }
        service.sendTestEMail("test@myprovider.de")

        then:
        sendMailCalled == true
    }
}

结果:

"C:\Program Files\Java\jdk1.8.0_112\bin\java" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.4\lib\idea_rt.jar=49498:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.4\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\user\AppData\Local\Temp\classpath.jar com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 "de.mypackeage.EmailSpec,test send email"

java.lang.IllegalStateException: No GORM implementations configured. Ensure GORM has been initialized correctly

    at org.grails.datastore.gorm.GormEnhancer.findSingleDatastore(GormEnhancer.groovy:380)
    at org.grails.datastore.gorm.GormEnhancer.findSingleTransactionManager(GormEnhancer.groovy:399)
    at de.mypackeage.EmailSpec.test send email(EmailSpec.groovy)




Process finished with exit code -1

测试已经没有问题,但我不知道它为什么会再运行。任何形式的帮助都表示赞赏。

该项目使用Grails 3.3.1

进行设置

2 个答案:

答案 0 :(得分:2)

问题是我在IntelliJ中作为JUnit测试执行了测试。因此,grails上下文没有启动并导致错误。

答案 1 :(得分:0)

我经常从IntelliJ运行集成测试。

如果你编辑配置(右上) - >默认值 - > JUnit的 将VM选项设置为-Dgrails.env = test -ea

这将使“测试”配置文件能够在intellij中执行。

希望它有所帮助。

相关问题