Сбой теста на Amazon и Codeship

Создавая приложение с помощью Dropbox и Google Drive в Groovy, тесты проходят нормально.

Код:

 def "It instantiates and configures the googleAuthorizationCodeFlowBuilder component"() {
         given:
         def ctx = grailsApplication.mainContext
         GoogleAuthorizationCodeFlow.Builder builder = ctx.googleAuthorizationCodeFlowBuilder

         expect:
 }

Однако при работе на Codeship и Amazon тест не проходит:

Сообщение: Ошибка при создании bean-компонента с именем 'googleAuthorizationCodeFlowBuilder': создание экземпляра bean-компонента не удалось; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр класса компонента [com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow$Builder]: конструктор выдал исключение; вложенным исключением является java.lang.NullPointerException

Линия | Метод ->> 285 | autowireConstructor в org.springframework.beans.factory.support.ConstructorResolver

| 1075 | autowireConstructor в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory

/* вещи */

org.apache.catalina.core.ContainerBase$StartChild | 1549 | позвонить в '' | 262 | бегать . . . . . . . . . . . . . . в java.util.concurrent.FutureTask | 1145 | runWorker в java.util.concurrent.ThreadPoolExecutor | 615 | бегать . . . . . . . . . . . . . . в java.util.concurrent.ThreadPoolExecutor$Worker ^ 745 | запустить в java.lang.Thread

Вызвано BeanInstantiationException: не удалось создать экземпляр класса компонента [com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow$Builder]: конструктор выдал исключение; вложенным исключением является java.lang.NullPointerException -> 163 | экземпляр класса в org.springframework.beans.BeanUtils

| 121 | создать экземпляр в org.springframework.beans.factory.support.SimpleInstantiationStrategy | 277 | autowireConstructor . . . . . . в org.springframework.beans.factory.support.ConstructorResolver | 1075 | autowireConstructor в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory | 979 | создатьBeanInstance . . . . . . в '' | 487 | doCreateBean в '' | 123 | сделатьCreateBean . . . . . . . . . в java.util.concurrent.ThreadPoolExecutor

/* больше трассировки стека */

| 615 | бегать . . . . . . . . . . . . . . в java.util.concurrent.ThreadPoolExecutor$Worker ^ 745 | запустить в java.lang.Thread

Компонент googleAuthorizationflowBuilder создает только GoogleAuthorizationCodeFlow.Builder (я использую Google java API).

РЕДАКТИРОВАТЬ 1: я воспроизвел ошибку на своем компьютере, изменив doWithSpring:

def doWithSpring = {
        def config = application.config
        String googleSecret = getConfigValue(config, 'storage.google.secret')
        String googleAppId = null//getConfigValue(config, 'storage.google.appId')
        String appName = getConfigValue(config, 'storage.appName')

        if (!ConfigUtils.optional(config,'storage.google.disabled')) {
            googleNetHttpTransport(NetHttpTransport)
            googleJsonFactory(JacksonFactory)
            googleCredentialsBuilder(GoogleCredential.Builder) {
                transport = googleNetHttpTransport
                jsonFactory = googleJsonFactory
            }
       googleAuthorizationCodeFlowBuilder(GoogleAuthorizationCodeFlow.Builder, ref('googleNetHttpTransport'), ref('googleJsonFactory'),
                googleAppId, googleSecret, [DRIVE])
        }
    }

РЕДАКТИРОВАТЬ 2: кажется, что ошибка возникает именно тогда, когда AppId имеет значение null... Вопрос в том, почему он равен нулю в облаке, а не на моей машине...


person Heschoon    schedule 19.03.2015    source источник


Ответы (1)


Хорошо, кажется, что переменные среды, используемые для инициализации значений Config.groovy, не были установлены в проекте Codebase, что привело к вышеупомянутой ошибке.

Отсутствующие переменные среды были инициализированы на Codeship, и теперь все отлично работает.

person Heschoon    schedule 19.03.2015
comment
Эй, это Марко из команды Codeship. Я только что увидел сообщение и хотел спросить, вы уже исправили это? Если нет, свяжитесь с нами через наш мессенджер в приложении или по адресу [email protected]! - person mlocher; 19.03.2015
comment
@Марко Это исправлено! Просто глупая ошибка. Отсутствующие переменные среды были инициализированы, и теперь все работает отлично. - person Heschoon; 20.03.2015
comment
Отлично, если у вас есть другие вопросы, не стесняйтесь обращаться! Ваше здоровье! :) - person mlocher; 20.03.2015