Есть ли способ модульного тестирования ScheduledExecutorService.scheduleAtFixedRate без использования Thread.sleep?

голоса
0

Я хотел бы модульного тестирования класса, который выполняет задачу, используя ScheduledExecutorService.scheduleAtFixedRate, и я не могу найти путь к «график» нескольких прогонов задачи в модульном тесте без использования Thread.sleep, который медленно и не так точно, как хотелось бы. Есть ли способ передать Передразнивало временную ссылку на службу исполнителя или другие обходные пути, чтобы имитировать ход времени?

Задан 02/12/2019 в 23:59
источник пользователем
На других языках...                            


1 ответов

голоса
0

Модульное тестирование проверить поведение вашего кода в отрыве от своих зависимостей.

Реализации ScheduledExecutorServiceпредоставляются JVM и , следовательно , не код, а зависимость , которая должна быть заменена двойной тест в то время как модульное тестирование кода. (Там может быть правильная установка для теста , который нуждается в ScheduledExecutorServiceреализации должна быть выполнена, но это не юнит тест затем.)

Таким образом , в случае , если вы пишете тест устройства (а не какой -либо другой вид испытаний , как то есть тесты интеграции , что случается с помощью JUnit framwork ) , вы должны создать макет для ScheduledExecutorServiceинтерфейса с помощью насмешливых рамок (как Mockito или так) и убедитесь , что ваш код вызывает нужный метод на издеваться.

Чтобы включить тест для этой проверки вы должны внедрить реализацию ScheduledExecutorServiceинтерфейса в код (предпочтительно через инъекцию конструктора ) и не иметь свой блок испытываемое приобретения его сам, так что у вас есть шов , на котором вы можете обменять реальную реализацию ScheduledExecutorServiceинтерфейса ти Ложная с целью модульного тестирования.

Ответил 03/12/2019 в 01:29
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more