gpt4 book ai didi

java - 等待方法执行

转载 作者:行者123 更新时间:2023-12-02 11:54:20 24 4
gpt4 key购买 nike

假设,我有一个类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 之后调用.

提前谢谢您。

附注不要提出使用 Thread.sleep 的解决方案意味着制作 SomeClass 的方法或解决方案实现Runnable界面,因为这些解决方案不符合任务分配。

最佳答案

您只是很难在这里测试代码。

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

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

例如:不要使用低级线程,而是使用 ExecutorService。然后使用same thread executor供您测试。因为这可以让您将多线程问题转变为单线程问题。只需使用不同类型的执行器即可。

关于java - 等待方法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47701893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com