Построение приложения с помощью Dropbox и Google Drive в Groovy, тесты проходят нормально.Тест не работает на Amazon и Codeship
Код:
def "It instantiates and configures the googleAuthorizationCodeFlowBuilder component"() {
given:
def ctx = grailsApplication.mainContext
GoogleAuthorizationCodeFlow.Builder builder = ctx.googleAuthorizationCodeFlowBuilder
expect:
}
При работе на Codeship и Amazon, однако, тест не пройден:
Сообщение: Ошибка при создании боб с именем 'googleAuthorizationCodeFlowBuilder': Инстанцирование боба не удалось; Вложенное исключение - org.springframework.beans.BeanInstantiationException: Не удалось создать экземпляр класса bean [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 | instantiateClass в 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 | createBeanInstance. , , , , , in '' | 487 | doCreateBean in '' | 123 | doCreateBean. , , , , , , , , в java.util.concurrent.ThreadPoolExecutor
/* более StackTrace */
| 615 | запустить . , , , , , , , , , , , , , в java.util.concurrent.ThreadPoolExecutor $ Worker ^ 745 | работать в java.lang.Thread
googleAuthorizationflowBuilder боб только создает GoogleAuthorizationCodeFlow.Builder (я использую Java API Google).
EDIT 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])
}
}
EDIT 2: Мне кажется, что ошибка произойдет конкретно, когда AppId равна нулю ...Вопрос в том, почему это null на облаке, а не на моей машине ...
Ахой, Марко из экипажа Кодекса. Я только что видел сообщение и хотел спросить, исправили ли вы это? Если нет, не стесняйтесь обращаться к нам через наш in-app messenger или [email protected]! – mlocher
@Marko Это исправлено! Просто глупая ошибка. Пропущенные переменные среды были инициализированы, и теперь все отлично работает. – Heschoon
Отлично, если у вас есть другие вопросы, не стесняйтесь обращаться к нам! Ура! :) – mlocher