【解决方案1】:

你从外部提供执行者然后verify

class MyClass {
  private final ScheduledThreadPoolExecutor stp;
  public MyClass(ScheduledThreadPoolExecutor ex) { stp = ex; }

  public void start() {
    stp.scheduleAtFixedRate(executeRunnable(), 2,2, TimeUnit.SECONDS); 
  }
}

class MyTest {
  @Mock
  ScheduledThreadPoolExecutor exec;

  public void testStart() {
    MyClass sut = new MyClass(exec);
    sut.start();
    verify(exec).scheduleAtFixedRate(any(), eq(2), eq(2), eq(TimeUnit.SECONDS));
  }
}

这样,您可以确保课程在预期时间安排可运行文件。如果您想确保可运行的行为,您可以使用ArgumentCaptor,但我不知道您将如何验证System.out.println()

【讨论】: