Grails 3: исключение IllegalStateException после выполнения интеграционного теста

Я продолжаю получать исключение, когда запускаю интеграционный тест:

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("[email protected]")

        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.


person Erando    schedule 04.01.2018    source источник


Ответы (2)


Проблема заключалась в том, что я выполнил тест в IntelliJ как тест JUnit. Таким образом, контекст Grails не запустился и привел к этой ошибке.

person Erando    schedule 05.01.2018

Я часто запускаю интеграционные тесты из IntelliJ.

Если вы редактируете конфигурации (вверху справа) -> Defaults -> JUnit, установите для параметров виртуальной машины значение -Dgrails.env=test -ea

Это позволит выполнить «тестовый» профиль в intellij.

Надеюсь, поможет.

person Kurt Bliefernich    schedule 11.01.2018