ExecutorService不在JUnit测试中执行Runnables
我有一个我想测试的执行器服务。
我有几个需要调用的任务(Runnables),然后调用wait()并且几秒钟之后虚拟计时器调用notify() 。
我这样做是为了检查所有任务是否按顺序执行并在一段时间后执行。
问题是我的Runnable的run()方法根本没有被调用。 我设置了一个断点,代码执行没有达到它。
在普通编码中,它运作良好。 任务排队,他们调用wait()直到没有获得某些响应或触发超时,他们调用notify()并执行下一个任务。
问题是我运行测试时。
有什么想法吗?
当test
方法在其他线程命中wait
并notify
之前退出时,可能会发生这种情况。
试试电话:
executorService.shutdown(); try { executorService.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { }
在退出test
方法之前。 它将阻止测试方法,直到所有Runnable
完成。