2013-02-28 2 views
1

У меня есть набор тестов на основе Spock, которые проходят локально, но не работают с двумя следующими исключениями, которые регистрируются на моем сервере CI (Jenkins). Некоторые тесты терпят неудачу с обоими исключениями, но некоторые только терпят неудачу с первым.Тесты модулей Grails Spock проходят локально, но не работают в среде CI

Все тесты не с этим исключением:

Account field name is nullable using null(com.vsnap.site.entities.account.organization.OrganizationSpec) 
| 
java.lang.IllegalStateException: Already value [[email protected]] for key [[email protected]] bound to thread [main] 
at org.grails.datastore.mapping.core.DatastoreUtils.bindSession(DatastoreUtils.java:337) 
at grails.test.mixin.domain.DomainClassUnitTestMixin.connectDatastore(DomainClassUnitTestMixin.groovy:108) 
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138) 
at org.spockframework.runtime.extension.builtin.JUnitFixtureMethodsExtension$FixtureType$FixtureMethodInterceptor.intercept(JUnitFixtureMethodsExtension.java:145) 
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:84) 
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138) 
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138) 
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138) 

Некоторые неудачу с этим в дополнение к первой:

java.lang.NullPointerException: Cannot invoke method isActive() on null object 
at grails.test.mixin.support.GrailsUnitTestMixin.shutdownApplicationContext(GrailsUnitTestMixin.groovy:232) 
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138) 
at org.spockframework.runtime.extension.builtin.JUnitFixtureMethodsExtension$FixtureType$FixtureMethodInterceptor.intercept(JUnitFixtureMethodsExtension.java:145) 
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:84) 
at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:138) 

В этих единицах тестов, все, что я делаю это тестирование ограничений на объект домена:

@TestFor(User) 
class UserSpec extends Specification { 
    def "test user field constraints"() { 
     when: 
     def user = new User(name: name) 

     then: 
     user.errors['name'] == error 

     where: 
     error  | name 
     'blank' | '' 
    } 
} 
+0

Проблема была в том, что я не определял зависимости правильно в соответствии с документами: http://grails.org/plugin/spock – Rhysyngsun

+0

Не могли бы вы уточнить? Я, похоже, правильно определил зависимости, но у меня такая же проблема при запуске тестов через IntelliJ (тесты выполняются с моей консоли отлично) –

+0

Запуск «grails clean» в папке проекта из моей командной строки, похоже, не знаю, что получилось испорчено, но, похоже, это проблема! –

ответ

0

Как только я оставил комментарий выше, я обнаружил, что трассировка стека является исполнительной y пытается рассказать мне что-то полезное :) Проблема в том, что одна и та же библиотека втягивается IntelliJ в моем случае, и оба экземпляра регистрируются у слушателей .... В моем случае Maven проводил тестирование grails -plugin, а также IntelliJ имеет папку grails, содержащую ту же самую банку в дереве зависимостей (настройка модуля). Удаление одного из них позаботилось о проблеме ... теперь на следующей :)