Как я могу получить текстуру Флаттера от родного плагина? (флаттер => нативный. Не нативный => флаттер)

Я вижу ошибку в следующей строке:

@ContextConfiguration(classes = [AmazonS3Config::class, VqsS3FileReader::class])

Пожалуйста, введите здесь configuration классы (а не только бобы).

Short-hot исправить тест

Создать класс (если отсутствует), например VqsS3Configration в основном модуле (например, в модуле, где у вас есть производственный код)

Создать класс, например VqsS3TestConfigration, в том же пакете с ваши тесты. Содержимое этого файла:

@org.springframework.context.annotation.Configuration // mark, that this is configuration class
@org.springframework.context.annotation.Import(VqsS3Configration::class) // it references production configuration from test configuration
@org.springframework.context.annotation.ComponentScan // ask Spring to autoload all files from the package with VqsS3TestConfigration and all child packages
class VqsS3TestConfigration {
   /*put test-related beans here in future*/
}

Затем перейдите к тесту и измените объявление:

@ContextConfiguration(classes = [VqsS3TestConfigration ::class]) // we ask Spring to load configuration here

Я создал образец приложения здесь: https://github.com/ imanushin / spring-boot2-junit5-and-kotlin-integration

Пожалуйста, используйте строку .\gradlew.bat test или gradlew.bat bootRun в папке src. Тест проверит, что мы можем читать свойства. bootRun будет печатать автоматически загруженные свойства

Теория расточки

Прежде всего - Spring имеет классы конфигурации - они необходимы для загрузки и инициализации других классов. Вместо классов Service или Comonent основная цель классов конфигурации - просто создавать сервисы, компоненты и т. Д.

Если мы упростим алгоритм загрузки приложения Spring, это будет следующим:

  1. Найти классы конфигурации
  2. Прочитать их аннотацию, понять список классов (например, дерево ссылок), которые должны быть загружены (и, кроме того, как они должны быть загружены)
  3. Загружать классы разными способами:

3.1. Для классов, которые аннотируются с помощью @ConfigurationProperties, введите здесь пункты конфигурации

3.2. Для классов, которые аннотируются с помощью @RestController, зарегистрируйте их как контроллеры отдыха

3.N. и т. д. ...

Как понимает Spring, какая конфигурация должна быть загружена?

  1. Формально это делается Spring Boot, однако я назову ее как Spring
  2. Понимать несколько исходных конфигураций - их можно поместить в класс SpringApplicationBuilder в тестовые аннотации (см. выше), в контекст XML и т. д. В нашем случае мы используем тестовую аннотацию и @ContextConfiguration атрибут
  3. Рекурсивный получить всю импортированную конфигурацию (например, Spring читает @Import аннотацию, затем она получает детей, затем проверяет их импорт и т. д.).
  4. Используйте Spring Заводы для автоматической настройки конфигурации из jar

Поэтому в нашем случае Spring будет делать такие действия:

  1. Получить конфигурацию из тестовой аннотации
  2. Получите все остальные конфигурации рекурсивным способом
  3. Загрузите все классы в контур
  4. Запустите тест

1
задан kdmurray 19 January 2019 в 06:36
поделиться