@ Запланированный junit с mockito - PullRequest
0 голосов
/ 28 мая 2020

У меня есть служба с аннотацией @Scheduled, и я пытаюсь ее протестировать.

@Slf4j
@Service
public class CreatorService {

    private final MyService myService;

    public CreatorService(MyService myService) {
        this.myService= myService;
    }

    @PostConstruct
    @Scheduled(cron = "${test.cron.expression}")
    public void initAndCheckTimers() {
        myService.goToDb();
    }
}

и я написал модульный тест для этой службы

@RunWith(MockitoJUnitRunner.class)
@PropertySource("classpath:application-default-test.properties")
@EnableScheduling
public class AlertsSchedulerCreatorServiceTest {

        @InjectMocks
        CreatorService service;

        @Mock
        MyService myService;

        @Test
        public void test() throws InterruptedException {
            TimeUnit.MINUTES.sleep(1);
        }
}

Мок введен нормально, но метод initAndCheckTimers () не запускается. Как я могу проверить свой метод @Scheduled?

1 Ответ

0 голосов
/ 28 мая 2020

Проблема в том, что @EnableScheduling работает только для классов @Configuration

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/annotation/EnableScheduling.html

Вы можете создать класс Config, как показано ниже

@Configuration
@EnableScheduling
@ComponentScan("com.example.stackoverflow")
public class ScheduledConfig {
}

А после добавьте в свой тест вот так:

@SpringJUnitConfig(ScheduledConfig.class)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...