### Question:
CTSReaperInit { public synchronized void startReaper() throws IllegalStateException { Reject.ifTrue(started); if (debug.messageEnabled()) { debug.message(CoreTokenConstants.DEBUG_HEADER + "Starting the CTS Reaper"); } monitor.watchScheduledThread( scheduledService, reaper, config.getRunPeriod(), config.getRunPeriod(), TimeUnit.MILLISECONDS); started = true; } @Inject  CTSReaperInit(CTSReaper reaper,
                         ThreadMonitor monitor,
                         CoreTokenConfig config,
                         @Named(CoreTokenConstants.CTS_SCHEDULED_SERVICE) ScheduledExecutorService scheduledService,
                         @Named(CoreTokenConstants.CTS_DEBUG) Debug debug); synchronized void startReaper();  }### Answer:
@Test public void shouldUseMonitorToStartReaper() { ctsReaperInit.startReaper(); verify(mockMonitor).watchScheduledThread( any(ScheduledExecutorService.class), any(Runnable.class), anyLong(), anyLong(), any(TimeUnit.class)); }
@Test (expectedExceptions = IllegalArgumentException.class) public void shouldPreventSubsequentStarts() { ctsReaperInit.startReaper(); ctsReaperInit.startReaper(); }