NoSuchBeanDefinitionException с кварцем в тесте - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть проект Spring Boot (2.1.3), использующий планировщик Quartz.Он включен через стартер:

dependencies {
    ...
    implementation('org.springframework.boot:spring-boot-starter-quartz')
}

Приложение (в основном) настроено на компонентное сканирование.Если я запускаю приложение, все в порядке.Если я запускаю тест с пометкой @SprinBootTest, то все тоже хорошо.Но если я использую эту пользовательскую аннотацию

@DataJpaTest
@ComponentScan(basePackages = ["com.mycompany"])
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ActiveProfiles("intTest")
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
@Inherited
annotation class JpaTest

вместо @SpringBootTest, я получаю NoSuchBeanDefinitionException, потому что не может быть найден Кварц Scheduler.

Я попытался добавитьКварцевый пакет для сканирования компонентов, но это не помогает:

@ComponentScan(basePackages = ["com.mycompany", "org.quartz"])

Как можно заставить Spring подобрать Планировщик с моей настройкой теста с моей пользовательской аннотацией конфигурации?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Я не знаю, как исправить само сканирование компонента, но обходной путь - зарегистрировать Scheduler явно в коде:

@Configuration
class SchedulerConfiguration {

    @Bean
    fun scheduler(): Scheduler = StdSchedulerFactory.getDefaultScheduler()
}
0 голосов
/ 25 апреля 2019

Я предполагаю, что ваше приложение SpringBoot где-то объявляет @EnableScheduling.Попробуйте добавить его в свой @JpaTest

...