ExecutorService不在JUnit测试中执行Runnables

我有一个我想测试的执行器服务。

我有几个需要调用的任务(Runnables),然后调用wait()并且几秒钟之后虚拟计时器调用notify()

我这样做是为了检查所有任务是否按顺序执行并在一段时间后执行。

问题是我的Runnable的run()方法根本没有被调用。 我设置了一个断点,代码执行没有达到它。

在普通编码中,它运作良好。 任务排队,他们调用wait()直到没有获得某些响应或触发超时,他们调用notify()并执行下一个任务。

问题是我运行测试时。

有什么想法吗?

test方法在其他线程命中waitnotify之前退出时,可能会发生这种情况。

试试电话:

 executorService.shutdown(); try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { } 

在退出test方法之前。 它将阻止测试方法,直到所有Runnable完成。