### Question:
AvatarJob { @ConditionalOnProperty(value = "scheduling.enabled", havingValue = "true") @Scheduled(cron = "0 0 4 * * *") @Retryable public void bookmeter() throws InterruptedException { byte[] chosenImage = cloudStorageService.chooseImage(); bookmeterService.updateImage(chosenImage); metricService.log(AvatarType.BOOKMETER); }  @ConditionalOnProperty(value = "scheduling.enabled", havingValue = "true") @Scheduled(cron = "0 0 4 * * *") @Retryable void bookmeter(); @ConditionalOnProperty(value = "scheduling.enabled", havingValue = "true") @Scheduled(cron = "0 10 4 * * *") @Retryable void gravatar(); @ConditionalOnProperty(value = "scheduling.enabled", havingValue = "true") @Scheduled(cron = "0 20 4 * * *") @Retryable void slack(); @ConditionalOnProperty(value = "scheduling.enabled", havingValue = "true") @Scheduled(cron = "0 30 4 * * *") @Retryable void twitter();  }### Answer:
@Test @SneakyThrows public void bookmeterTest() { final byte[] imageBytes = new byte[]{0x01, 0x02, 0x03}; when(cloudStorageService.chooseImage()).thenReturn(imageBytes); doNothing().when(bookmeterService).updateImage(imageBytes); doNothing().when(metricService).log(AvatarType.BOOKMETER); avatarJob.bookmeter(); verify(bookmeterService).updateImage(imageBytes); verify(metricService).log(AvatarType.BOOKMETER); }