等待方法执行

时间:2017-12-07 18:54:15

标签: java multithreading java-8

假设我有一个方法SomeClass的课程void process()。这个方法的实现类似于new Thread(this::someOtherMethod).start(需要在特定线程中仅执行someOtherMethod)。

写下了这种方法的单元测试:

SomeClass class= new SomeClass(anObjectToWorkWith); class.process(); assertEquals(expectedObj, anObjectToWorkWith)

我已经意识到,当process方法在特定线程中执行时,assertEquals方法在process方法完成之前被调用。

因此,我有一个问题:是否有某种方法可以等待process方法执行,以便在assertEquals之后调用process

提前谢谢。

P.S。不建议使用Thread.sleep方法的解决方案或暗示使SomeClass实现Runnable接口的解决方案,因为这些解决方案不符合任务。

1 个答案:

答案 0 :(得分:1)

您只需即可在此处测试代码。

当您的测试代码创建一个新的线程实例并使用它时 - 那么只需没有编写合理的单元测试的好方法。

相反:考虑更改测试中的代码。

例如:不使用低级线程,而是转向ExecutorService。然后使用same thread executor进行测试。因为这允许您将多线程问题转变为单线程问题。只需使用不同类型的执行者。